編輯:關於Android編程
從API8開始,你可以將你的應用安裝在外部儲存。這是一個可選的特征,你可以在你的應用的manifest中聲明:android:installLocation屬性。如果你不聲明這個屬性,你的應用程序將會被安裝在內部儲存,並且不能被移到外置儲存。
當你聲明了preferExternal,你要求你的應用程序安裝在外置儲存,但是系統不確定你的程序一定安裝在外置儲存。若外置儲存已經滿了,將會儲存在內置儲存。用戶也可以在兩個儲存之間移動你的應用程序。若你聲明了auto,你表明你的應用程序可以安裝在外置儲存,但是你沒有一個安裝位置的偏好。系統會根據一些因素來決定你的應用程序安裝在哪。用戶也可以在兩個儲存之間移動你的程序。
當你的應用被安裝在外置儲存:
1.當你的外置儲存掛載在你的設備上時,對你的應用操作沒有影響。
2..apk文件會儲存在外置儲存,但是所有私有的用戶數據,數據庫,優化的.dex文件,和提取的本地的代碼都會保存在內置儲存。
3.你的應用被安裝的容器使用一個隨機生成的key加密,而且只能被安裝了這個應用的這個設備解密,這樣保證一個sdcard上只有一款相同的應用。
4.用戶可以通過系統設置將你的應用移到內置儲存。
注意:當用戶使用usb儲存和電腦共享文件或通過系統設置卸載SD Card,在外置儲存中運行的應用會立即被殺死。
向前兼容
在API8之前安裝的應用會被安裝在內置儲存,並且不會被移動到外置儲存。
但是你的應用可以通過設置來支持低於API8:、
1.在
2.不用修改minSDKVersion,並且保證你的應用代碼是兼容的
3.為了編譯你的應用程序,將你的build target改為API8,因為低的android庫不認識instaillLocation屬性,而且不會編譯你的應用程序。
那些不用安裝在外置儲存的應用
用戶使用usb儲存和電腦共享文件或通過系統設置卸載SD Card,在外置儲存中運行的應用會立即被殺死。
為了使你的應用能按預期的執行,如果你使用了一下的特征你不能將你的應用安裝在外置儲存。
1.服務:你運行的服務將會被殺死,而且當外置儲存被掛載時也不會重啟。但是你可以注冊一個 ACTION_EXTERNAL_APPLICATIONS_AVAILABLE的廣播intent,這樣當你外置應用變得可用的時候會被提醒。
2.警報服務:你用AlarmManager注冊的服務將被取消,你必須在外置儲存被重新掛載的時候重新注冊。
3.輸入方法引擎:你的IME將會被默認IME取代。
4.動態壁紙:你運行著的壁紙將會被默認的動態壁紙取代。
5.App widget:你的Appwidget會被從桌面移除。
6.賬戶管理:使用AccountManager創建的賬戶會消失。
7.同步Adapter:你的AbstractThreadedSyncAdapter 以及它的一切同步方法將不會工作。
8.boot completed這個廣播的接受者:系統會在外置儲存器被掛載之間發出ACTION_BOOT_COMPLETED 的廣播,你安裝在外置儲存的應用不會受到這個廣播。
那些需要安裝在外置儲存的應用
出去以上列表的,其他的應用都可以安裝在外置儲存,大游戲通常安裝在外置儲存中,因為游戲在它不活躍的時候不需要提供額外的服務,當外置儲存不可用,游戲將會被殺掉,當外置儲存變得可用而且用戶重啟游戲,不應該有可見的影響(假設游戲在它正常的Activity生命周期適當的保存了狀態)
當你的應用需要兆字節的apk文件時,你應該仔細考慮時候應該將應用安裝在外置儲存,來使用戶保存內置儲存空間。
現在各種公司財務流程走到了手機端啊pad這一些產品上面,安卓畫類似xls的庫並不是太多(可能我見識少),看到一個Git上的庫,覺得蠻好用的,嘗試性的移植到了產
之前學習oracle,簡單的認為數據庫只存在服務器端,學習安卓之後才發現原來android和Ios本身是“攜帶”數據庫的——SQLite,是輕量級的、嵌入式的
在項目中遇到需要提供給用戶一個密碼輸入框明文/密文切換顯示的需求,在網上搜索一圈都沒有發現完整的實現,幸而找到了一個實現的思路。先上效果圖,看了錄制屏幕gif的教程,無奈
既然我們已經知道了Fragment很好用,那麼我們也需要知道它的工作原理。Fragment只能存在於(作為容器的)Activity中,每一個Fragment都有自己的視圖
關於ListView側滑刪除這是個老話題,大多數APP都具有這樣類似的功