Android手機上面的存儲空間主要有手機本身的存儲空間和SD卡的存儲空間。之前用的最多的是SD卡的存儲空間,在總結的時候看了一下系統的源代碼,很有收獲。在手機安裝應用時,系統會自動在/data/data目錄下面以應用的主包名創建一個目錄,默認還會在最後的那個目錄裡面創建一個lib目錄。下面看一下系統獲取存儲空間的代碼:
來自android2.3.3系統源代碼/packages/apps/Settings/src/com/android/settings/applications/ManageApplications.java
Filesystem 1K-blocks Used Available Use% Mounted on
tmpfs 207628 32 207596 0% /dev
tmpfs 207628 0 207628 0% /mnt/asec
tmpfs 207628 0 207628 0% /mnt/obb
/dev/block/mtdblock3 256000 145736 110264 57% /system
/dev/block/mtdblock5 151168 102396 48772 68% /data
/dev/block/mtdblock4 40960 1204 39756 3% /cache
/dev/block/vold/179:1
942848 49232 893616 5% /mnt/sdcard
/dev/block/vold/179:1
942848 49232 893616 5% /mnt/secure/asec
可以看出有一個分區是掛載到了/data目錄下面,已經使用了48772K,還剩102396K,也就是512M的ROM最後系統只給用戶分配151168K,不足150M,其余的被系統占用,其它的就不說了,不敢在linux大神面前班門弄斧。從上面的代碼可以看出,系統給應用還有一定的緩存空間,最後還被計算到可用空間中去了。看過的同學可以用下面的代碼測試一下,獲取/data目錄和/data/data目錄下面的空間會不一樣,有一點點小差別,貌似應該就是緩存空間吧。SD卡就不說了,從上面的信息也可以看出來,SD卡有1個G,掛載在/mnt/sdcard目錄下面。
下面是個人整理的檢查手機的存儲空間的有關代碼,僅供參考。