不應該安裝在外部儲存器上的應用程式
當使用者啟用usb儲存器來跟計算機共享檔案時(或者是解除安裝或移除外部儲存器),任何被安裝在外部儲存器上,並且當前正在執行的應用程式都會被殺死。在usb儲存器被禁用和外部儲存器被重新掛載到裝置上之前,系統不會有效的感知到引用程式的存在。除了終止應用程式並讓它對使用者無效之外,這樣做還可以中斷某些更嚴重的應用程式型別。為了讓你的應用程式能夠像預期的那樣,如果它使用了以下功能,你不應該允許你的應用程式被安裝在外部儲存器上,由於在外部儲存器被解除安裝時,會引發一些後果:
services
型別的廣播intent,當被安裝在外部儲存器上的應用再次對系統有效時,它會給你的應用程式發通知。這時,你可以重啟你的服務。
alarm services
註冊的鬧鐘會被取消。在外部儲存器被重新掛載時,你必須手動重新註冊鬧鐘。
input method engines
你的ime會被預設的ime替代。當外部儲存器被重新掛載時,使用者可以開啟系統設定重新啟用你的ime。
live wall*****s
你的正在執行的livewall*****會被預設的livewall*****所替代。當外部儲存器被重新掛載時,使用者可以再次選擇你的livewall*****。
account managers
你用accountmanager
建立的賬號,會一直到外部儲存器被重新掛載才會顯示。
sync adapters
直到外部儲存器被重新掛載,你的abstractthreadedsyncadapter
和所有的非同步功能才會工作。
device administrators
和所有的管理員能力會被禁用,這可能會產生一些不可預知的結果,甚至會持續到外部儲存器被重新掛載之後。
broadcast receiverslistening for 「boot completed」
在外部儲存器被從裝置上解除安裝之前,系統會傳送action_boot_completed
廣播。如果你應用程式被安裝在外部儲存器上,它就不會接收到這個廣播。
copy protection
程式就可以被安裝在內部或外部儲存器上,包括sd卡。
如果你的應用程式使用了上述功能,你就不應該允許你的應用程式安裝在外部儲存器上。默
認情況,系統不會允許你的應用程式安裝在外部儲存器上,因此你不必擔心既存的應用程式。但是,如果你確定你的應用程式不能安裝在外部儲存器上,那麼你應該通過宣告帶有「internalonly」值的anroid:installlocation
屬性來明確說明。儘管這樣不會改變預設行為,但它會明確指示你的應用程式只能被安裝在內部儲存器上,並告訴其他開發者是已經被決定的事。
應該安裝在外部儲存器上的應用程式
簡單的說,任何不使用上述所列功能的應用程式安裝在外部儲存器上是安全的。通常一些大型遊戲會允許把應用程式安裝在外部儲存器上,因為通常遊戲在不活動時不會提供額外的服務。當外部儲存器無效,且遊戲程序被殺死時,不會影響外部儲存器再次有效且使用者重啟遊戲時的可視效果(假定遊戲在標準的
activity
生命週期中正確的儲存了它們的狀態)。
如果你的應用程式需要幾
m位元組儲存空間,你就應該認真考慮是否允許應用程式安裝在外部儲存器上,以便使用者可以保留內部儲存的空間。
android獲取安裝的應用程式
在google上輸入以上的關鍵字 android,可以搜到的 1listpacks getpackagemanager getinstalledpackages 0 雖然,有些 號稱可以過濾掉系統自身的應用程式,但是只要細看 就會發現,好像裡面的那個布林變數沒有起到什麼過濾的作用。方法一 通過獲取的...
android應用程式的安裝位置
本文編輯整理自 android應用程式的預設安裝位置以及是否可移動取決於開發者在其androidmanifest.xml中的設定 xmlns android android versioncode 1 android installlocation auto android versionname ...
Android應用程式的安裝位置
android應用程式的預設安裝位置以及是否可移動取決於開發者在其androidmanifest.xml中的設定 xmlns android android versioncode 1 android installlocation auto android versionname 1.0 andr...