當前位置:首頁 » 安卓系統 » android資源釋放

android資源釋放

發布時間: 2022-05-06 13:57:11

㈠ android開發 怎麼釋放activity的全部內存

假如現在有三個activity,分別是main,a 和b .
a和b都是需要很大內存的,在main中打開a或b,在a或b中直接按返回鍵,或者直接調用finish,回到main後通過update heap觀察剛才打開的activity佔用的資源可以很快釋放,如果是setResul後再調用finish回到main,發現內存被釋放的事件要稍微久一些。
第二個問題,在main中打開a,然後在a中startActivity打開b,然後a.finish,這個時候觀察a的內存並沒有釋放。如果在b中調用finish返回main後,a和b的內存就會被釋放掉。

㈡ 如何清理釋放Android手機內存空間

雖然Android 2.2系統開始已經支持Apps2SD功能,但是很多用戶使用後發現Android 2.2系統下仍然有很多應用程序無法安裝到SD卡,即可程序支持移動到SD卡,但是還會保留一部分系統文件和隱私文件在手機內存里。另外還有一些程序像Widgets,動態壁紙和一些系統程序,如果安裝在SD卡根本無法正常工作,內存不足依然是讓很多用戶感到棘手的問題。 不過Android作為一種優秀的移動操作系統,提供了幾種可以清理和釋放內存空間的辦法,我們總結了下面幾點希望可以幫助用戶解決燃眉之急。 清理大型應用程序的緩存數據 l 通過清理程序的緩存文件,釋放的內存空間會讓你喜出望外 l 進入手機設置選項,選擇 設置>應用程序 >管理應用程序 l 按一下Menu鍵,選擇「按大小排序」選項(如果是Android 2.2手機先要選擇已下載標簽),然後就可以按照應用程序大小排列所有手機安裝的應用程序 l 點擊一款列表中的應用程序,如果程序有緩存文件可以顯示大小,直接點擊「清除緩存」選項就可以釋放這些緩存文件占據的空間 l 有一些應用程序的緩存文件可能多達數MB,比如Google Maps,Market,瀏覽器和相冊程序,清理這幾個程序的緩存文件就可以釋放相當可觀的空間。 l 很多手機廠商都在旗下手機預裝了自己開發的UI程序,比如HTC Sense,MOTOBLUR等,如果你打算使用LaunherPro或者ADW這樣的launcher程序替代HTC Sense,你可以清理甚至刪除HTC Sense的數據文件,這個操作可以讓你的手機多出幾十MB空間。 l 另外Android Market還提供一些自動清除緩存文件的應用程序,比如Quick App Clean Cache這款收費軟體。對於已經取得root許可權的手機用戶,可以從Market下載 CacheCleaner, CacheMate和MoveCache這些程序來快速方便的清除程序緩存文件。 刪除那些你從來不用或者很少使用的應用程序 這是很多用戶都會面對的問題,默默忍受著手機內存不足的報警,甚至犧牲系統性能,就是捨不得刪除那些從來不用或者極少使用的應用程序,這可能也是一種強迫症。刪除這些程序你會發現手機從此海闊天空,而且你沒有任何損失。 移動所以可以移動的應用程序數據到SD卡 運行Android 2.2系統的手機支持安裝應用程序到SD卡,確保檢查所有你安裝的應用程序如果支持apps to SD卡功能一定要移動到SD卡,對於一些大型軟體特別是游戲程序節省的容量相當可觀。不過一定要注意Widgets程序,捆綁Widgets的程序,以及動態壁紙程序和那些需要在後台運行並且和系統進行交互的應用程序不要移動到SD卡存儲,否則程序可能無法正常工作。 如果覺得每個程序單獨設置太麻煩,可以藉助Apps 2 SD和SDMove這樣的程序簡化操作過程。

㈢ android 怎麼釋放圖片資源

Andorid限制了8M的圖片內存,如果超過了就會溢出,那就是要及時釋放內存中的圖片資源。
我之前的做法是簡單對圖片對象設置null。其實這樣是不行的,圖片依然在內存中的。
那如何做更有效呢?
很簡單。有代碼有真相。
java代碼
if(!bitmap.isRecycled()){//先判斷圖片是否已釋放了
bitmap.recycle();
}

㈣ android對應生命周期中應該釋放哪些資源

onPause():
當系統調用activity中的onPause(),從技術上講,意味著activity仍然處於部分可見的狀態.但更多時候意味著用戶正在離開這個activity,並馬上會進入Stopped state. 通常應該在onPause()回調方法裡面做以下事情:
停止動畫或者是其他正在運行的操作,那些都會導致CPU的浪費. 提交在用戶離開時期待保存的內容(例如郵件草稿). 釋放系統資源,例如broadcast receivers, sensors (比如GPS), 或者是其他任何會影響到電量的資源。

onResume():
當用戶從Paused狀態恢復activity時,系統會調用onResume()方法。系統每次調用這個方法時,activity都處於前台,包括第一次創建的時候。所以,應該實現onResume()來初始化那些在onPause方法裡面釋放掉的組件,並執行那些activity每次進入Resumed state都需要的初始化動作 (例如開始動畫與初始化那些只有在獲取用戶焦點時才需要的組件)

onStop():
當activity調用onStop()方法, activity不再可見,並且應該釋放那些不再需要的所有資源。一旦activity停止了,系統會在需要內存空間時摧毀它的實例(和棧結構有關,通常back操作會導致前一個activity被銷毀)。極端情況下,系統會直接殺死我們的app進程,並不執行activity的onDestroy()回調方法, 因此我們需要使用onStop()來釋放資源,從而避免內存泄漏.

onRestart(),onStart():
當activity從Stopped狀態回到前台時,它會調用onRestart().系統再調用onStart()方法,onStart()方法會在每次activity可見時都會被調用。onRestart()方法則是只在activity從stopped狀態恢復時才會被調用,因此我們可以使用它來執行一些特殊的恢復(restoration)工作,請注意之前是被stopped而不是destrory。

㈤ android 避免釋放內存

Google Android平台在設計程序聲明周期上比較特殊,可能是考慮到第二次載入時保證速度的原因而沒有強制加入內存釋放問題,所有的資源回收由Dalvik GC自動完成,所以在設計開發時一定要注意Activity和 Service類的生命周期問題,顯示在最上層的窗口將有最高的優先順序,當Android操作系統內存不夠用時自動將會根據歷史棧按優先順序強制殺掉進程。

㈥ 如何管理Android手機的剩餘內存

使用android手機的用戶可能都安裝了任務管理的軟體,使用android手機真的有必要安裝結束任務的軟體嗎?大家在使用中也都發現了,很多軟體在被結束後,馬上就會又出現在任務列表裡,或是稍等一會自己也會出現,任務管理不停的結束後台程序,也沒見給手機的運行速度帶來多少提升,這是為什麼呢?

其實大家不用那麼在意android手機剩餘內存的大小。很多人都是把使用其他系統的習慣帶到了android手機上,不是所有的智能手機系統都一樣的。android大多數應用沒有退出的設計其實是有道理的,這和系統對進程的調度機制有關系。如果你知道java,就能更清楚這機制了。其實和java的垃圾回收機制類似,系統有一個規則來回收內存。進行內存調度有個閥值,只有低於這個值系統才會按一個列表來關閉用戶不需要的東西。當然這個值默認設置得很小,所以你會看到內存老在很少的數值徘徊。但事實上他並不影響速度。相反加快了下次啟動應用的速度。這本來也是android的優勢之一,如果人為去關閉進程,沒有太大必要。特別是自動關進程的軟體。

可能有人會說了,那為什麼內存少的時候運行大型程序會慢呢?其實很簡單,在內存剩餘不多時打開大型程序,會觸發系統自身的調進程調度策略,這是十分消耗系統資源的操作,特別是在一個程序頻繁向系統申請內存的時候。這種情況下系統並不會關閉所有打開的進程,而是選擇性關閉,頻繁的調度自然會拖慢系統。

那麼,進程管理軟體到底還有存在的價值嗎?其實還是有的,在運行大型程序之前,你可以手動關閉一些進程釋放內存,可以顯著的提高運行速度。但一些小程序,完全可交由系統自己管理。很多朋友還有個疑問,如果不關程序是不是會更耗電?這里也解釋一下,android的應用在被切換到後台時,它其實已經被暫停了,並不會消耗cpu資源,只保留了運行狀態。所以為什麼有的程序切出去重新進入,還會到主界面。但是,一個程序如果想要在後台處理些東西,如音樂播放,它就會開啟一個服務,服務可在後台持續運行,所以在後台耗電的也只有帶服務的應用了。這個在進程管理軟體里能看到,名字是service。所以沒有帶服務的應用在後台是完全不耗電的,沒有必要關閉。這種設計本來就是一個非常好的設計,下次啟動程序時,會更快,因為不需要讀取界面資源,何必要關掉他們抹殺這個android的優點呢?

還有一點,為什麼android應用看起來那麼耗內存?大家知道,android上的應用是java,當然需要虛擬機,而android上的應用是帶有獨立虛擬機的,也就是每開一個應用就會打開一個獨立的虛擬機。這樣設計的原因是可以避免虛擬機崩潰導致整個系統崩潰,但代價就是需要更多內存。

至於為什麼開了大程序或者開了好幾個程序之後切換會變慢,具體分析如下:

已經開啟了一個大程序,佔用70%內存,如果再想運行一個程序,此時還需要50%的內存,則就需要一個從大程序佔用的內存中釋放或者壓縮的過程,所以表現出來的就是慢一會兒。

已經開啟了幾個程序共佔用內存80%,運行新程序時又需要20%的內存,系統內存因為沒見過剩餘0的時候,也就是應該剩一部分空閑內存,那麼就需要從之前開啟的這幾個程序中選擇一個或者幾個來關閉,這一過程也需要耗費系統資源,所以會慢一會兒。也就是說你手動去結束程序的時候,就是替系統在釋放內存,就算你不去結束,在需要內存的時候系統也會自動結束程序釋放內存。

不在後台運行的程序(沒服務的),即使不結束也不會耗電。在後台運行的(有服務的)程序,如一些播放器或實時監控的軟體,自然會耗電。這就說明結束進程並不是沒用,我們只需要看哪個帶服務耗電哪個程序後台一直在運行,看服務就能看出來,這樣的軟體如果用不到的時候就結束了吧。

以QQ舉例,正常的退出,會在進程管理里留下qq的運行過的狀態,但不耗電不佔 cpu,如果你只是切換出去(按房子鍵而不是退出)那麼自然會耗電,因為程序還在運行,QQ還在線呢。

這里就有個要注意的地方了,雖然房子鍵和那個返回鍵都可以將程序切換出去,但是兩者的效果差異是很大的,返回鍵可以視作程序已經退出了,而按房子鍵,則是將程序切換到了後台來運行,軟體並沒有退出哦!

以上這些設計都是為了確保了android的穩定性,正常情況下最多單個程序崩潰,但整個系統不會崩潰,也永遠沒有內存不足的提示出現。大家可能是被windows毒害得太深了,總想保留更多的內存,但實際上這並不一定會提升速度,相反卻喪失了程序啟動快的這一系統特色,得不償失。大家不妨換種觀念習慣來使用android系統。

㈦ 如何有效的清除Android中無用的資源

你好,
使用lint掃描出項目中的無用,重復,版本不合理等資源,這里只處理圖片,layout,menu資源也就是對應lint結果的UnusedResources,然後過濾出UnusedResources資源,對資源按照項目目錄備份一份(防止誤刪,方便恢復),然後刪除。被刪除的內容,使用對象保存到outData.txt中,方便查閱。這里使用Android studio 的lint插件為例(掃描結果有清晰整潔的xml結構,方便數據處理)。步驟:1.啟動Android studio,使用lint模式運行目標Android項目點擊運行2.自動生成lint-result.xml文件,目錄:項目路徑\build\outputs\lint-result.xml3.配置白名單whitelist.txt,過濾掉不需要刪去的文件4.點擊file文件下的autoCleaner.exe,選擇lint-result.xml及其選擇要清理的資源5.確定清理,被清理掉的文件備份到file\file\項目原路徑下,被清理掉的文件信息以對象形式保存在outResObj.txt
6.完成 被刪去的文件按照原目錄備份

㈧ Android 在程序運行時,有若干個activity,怎麼在退出這個Activity是,釋放掉它所佔用的運行空間

你每次退出activity的時候調用finish()稍後會自動清理釋放內存的,你可以直接在activity的onStop方法裡面寫這個方法,這樣當界面不可見的時候就會自動finish了

你可以在你的Manifest裡面的application中加
android:largeHeap="true"
android:hardwareAccelerated="true"
這樣系統就會分配更大的內存給你了

熱點內容
php開發的網頁 發布:2025-05-14 16:22:03 瀏覽:477
伺服器內存跑滿了怎麼回事 發布:2025-05-14 16:21:16 瀏覽:223
微信qq音樂緩存 發布:2025-05-14 16:16:16 瀏覽:468
c語言回收內存 發布:2025-05-14 16:16:08 瀏覽:143
2021國產安卓頂級旗艦買哪個 發布:2025-05-14 16:15:36 瀏覽:300
linux自學視頻 發布:2025-05-14 16:14:49 瀏覽:255
我的世界伺服器崩了重啟 發布:2025-05-14 16:09:37 瀏覽:44
android深拷貝 發布:2025-05-14 16:09:35 瀏覽:153
cf電腦版轉伺服器神器還在嗎 發布:2025-05-14 16:09:02 瀏覽:211
百度文庫伺服器如何搭建 發布:2025-05-14 16:09:00 瀏覽:248