Android 記憶體管理 Environment

2021-07-09 06:14:57 字數 1893 閱讀 9685

environment類中提供了幾個靜態常量用於標識外部儲存的狀態,這些狀態都是string型別

media_bad_removal 在沒有掛載前儲存**已經被移除。

media_checking 正在檢查儲存**。

media_mounted 儲存**已經掛載,並且掛載點可讀/寫。

media_mounted_read_only 儲存**已經掛載,掛載點唯讀。

media_nofs 儲存**是空白或是不支援的檔案系統。

media_removed 儲存**被移除。

media_shared 儲存**正在通過usb共享。

media_unmountable 儲存**無法掛載。

media_unmounted 儲存**沒有掛載。

可以通過靜態方法getexternalstoragestate()來獲取外部儲存的狀態,如果程式需要在外部儲存裡面讀寫資料,必須要先判斷:

if(environment.media_mounted.equals(

environment.getexternalstoragestate()) 

|| !environment.i***ternalstorageremovable())

然後,新增外部儲存讀和寫的許可權:?

1

2

在environment中還提供了android標準目錄的路徑,以string型別提供。

directory_alarms 系統提醒鈴聲存放的標準目錄。

directory_downloads 

的標準目錄。

directory_movies 電影存放的標準目錄。

directory_music **存放的標準目錄。

directory_notifications 系統通知鈴聲存放的標準目錄。

directory_pictures 存放的標準目錄

directory_podcasts 系統廣播存放的標準目錄。

directory_ringtones 系統鈴聲存放的標準目錄。

static file getdatadirectory() 獲得data的目錄(/data)。

static file getexternalstoragedirectory() 獲得外部儲存**目錄。(/mnt/sdcard or /storage/sdcard0)

static file getrootdirectory() 獲得系統主目錄(/system)

除了用environment獲取儲存目錄之外,還可以通過把路徑寫死的方式,比如要讀取外部儲存/mnt/sdcard目錄下的檔案,可以在程式中直接用全路徑,

但是這樣做是很不好的,應該

android

實在是太開放了,外部儲存的目錄的什麼還是要韌體製作商才知道,但是有一點是毋庸置疑的,就是android框架層裡面

已經是指定好了environment.getdownloadcachedirectory()的返回路徑。所以,盡量用這種方式來獲取和儲存資料,以免韌體廠商不同而造成路徑的差異。

android的實際開發中還用了兩個非常重要的快取目錄,乙個是應用程式自己的快取空間,另乙個是外部儲存為該應該程式提供的快取空間。有什麼差別?

使用過lrucache和dislrucache的童鞋應該知道。

這兩個方法是通過上下文物件context獲取的,只要應用程式被解除安裝,這兩個目錄下的檔案都要被清空

context.getcachedir() 獲取應用程式自己的快取目錄

context.getexternalcachedir() 獲取應用程式在外部儲存的儲存目錄

Android記憶體管理

low memory killer android的low memory killer是在標準linux kernel的oom out of memory 基礎上修改而來的一種記憶體管理機制,當系統記憶體不足時,殺死bad程序釋放其記憶體。bad程序的選擇標準有兩個 oom adj和占用記憶體的大小...

聊聊Android記憶體管理

聊聊對記憶體洩漏的認識?1.延時性的記憶體洩漏2.覆蓋式記憶體洩漏3.累加式記憶體洩漏沒有用的物件無法 的現象就是記憶體洩露 記憶體洩露會導致什麼後果?1.應用可用的記憶體減少,增加了堆記憶體的壓力2.降低了應用的效能,比如會觸發更頻繁的 gc3.嚴重的時候可能會導致記憶體溢位錯誤,即 oom er...

Android 記憶體管理機制

無意中在miui看到的文章,感覺不錯,轉了過來。原文如下 這種設計本來就是乙個非常好的設計,下次啟動程式時,會更快,因為不需要讀取介面資源。android系統這樣的設計不僅非常適合移動終端的需要,而且減少了系統崩潰的可能,確保了系統的穩定性。老想著清理記憶體的同學完全是因為被塞班或者windows毒...