android:installLocation簡析

來源:互聯網
上載者:User

在Froyo(android 2.2,API Level:8)中引入了android:installLocation.通過設定該屬性可以使得開發人員以及使用者決定程式的安裝位置.

android:installLocation隸屬於AndroidManifest.XML中的manifest節點.如下所示:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="string"
          android:sharedUserId="string"
          android:sharedUserLabel="string resource"
          android:versionCode="integer"
          android:versionName="string"
          android:installLocation=["auto" | "internalOnly" | "preferExternal"] >
    . . .
</manifest>
android:installLocation可以設定為"auto"、"internalOnly"、"preferExternal"三個值中的任何一個.
  auto:程式可能被安裝在外部儲存介質上(例如:SD Card),但是預設會被安裝到手機記憶體中.當手機記憶體為空白時,程式將被安裝到外部儲存介質上.當程式安裝到手機上後,使用者      可以決定把程式放在外部儲介質還是記憶體中.
  internalOnly:預設值.當設定為該值時,程式只能被安裝在記憶體中,如果記憶體為空白,則程式將不能成功安裝.
  preferExternal:將程式安裝在外部儲存介質上,但是系統不保證程式一定會被安裝到外部儲存介質上.當外部儲存介質不可以或空時,程式將被安裝到記憶體中.程式使用了for      ward-locking機制時也將被安裝到記憶體中,因為外部儲存不支援此機制.程式安裝後,使用者可以自由切換程式應該在外部還是內部儲存介質上.
注意:當程式使用了Google Play的Copy Protection特性時,只能安裝到記憶體中.
當程式被安裝到外部儲存介質時,
① .apk檔案將被移動到外部儲存介質上,但是程式的資料仍然會在記憶體中
② 儲存.apk檔案的容器將會使用一個隨機產生的密鑰進行加密,這樣只有安裝該程式的設定可以使用存在外部儲存介質上的資料.
警告:當外部儲存介質被卸載時,安裝在該外部儲存介質上的程式將立刻被終止掉!
向後相容性:
  聲明了android:installLocation,但android:minSdkVersion小於8時,我們使用不低於Froyo的AVD進行編譯,這樣在低於Froyo的系統中android:installLocation將被忽略,而不低於Fro  yo的系統中將使用我們指定的android:installLocation.
當我們的程式具有如下行為時我們不應該將程式安裝到外部儲存介質上
  ①Service
    正在啟動並執行服務將被終止,當外部儲存介質被重新載入時服務不會被重啟.
  ②Alarm Service
    鬧鐘服務將被取消,開發人員必須在外部儲存介質重新載入後重新註冊鬧鐘服務.
  ③Input Method Engines
    IME將被換成系統IME,當外部儲存介質被重新載入後使用者可以通過系統設定來啟動我們的IME
  ④Live Wallpapers
    我們的動態壁紙將被替換為預設的動態壁紙.外部儲存介質重載後,使用者可以更換回來.
  ⑤Live Folders
    我們的動態資料夾將被移出.
  ⑥App Widgets
    我們的小組件將被移出,通常只有系統重啟後我們的小組件才可用.
  ⑦Account Managers
    使用AccountManager建立的賬戶將會消失,直至儲存介質被重新載入.
  ⑧Sync Adapters
    只有外部儲存介質被重新載入時,我們的同步功能才可用
  ⑨Device Administrators
    我們的DeviceAdminReceiver將會失效
  ⑩監聽開機結束事件
    系統會在載入外部儲存介質之前發送ACTION_BOOT_COMPLETED廣播.因此安裝在外部儲存介質的程式將不能接受開機廣播.
通常,只要我們沒有使用上述的特性,我們就可以將我們的程式安裝到外部儲存介質上.例如,大的遊戲程式.當我們的APK檔案有幾M大時我們應該認真的考慮是否要將程式移動到外部儲存介質上以協助使用者節省記憶體.
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.