Activity isFinishing()判斷Activity的狀態(tài)實(shí)例
在Activity中調(diào)用finish()或按返回鍵退出時,若有資源被其他對象引用不能釋放(如context被某個單例對象引用或正在線程中被使用),則activity不會被調(diào)用onDestory()方法。
isFinishing() 可用來判斷Activity是否處于活躍狀態(tài)(false)還是等待回收狀態(tài)(true)。
isDestroyed() 根據(jù)源碼注釋可知,只有onDestroy()方法被調(diào)用后它才返回true,因此實(shí)際用處不大。
查看源代碼中的注釋:
/**
* Check to see whether this activity is in the process of finishing,
* either because you called {@link #finish} on it or someone else
* has requested that it finished. This is often used in
* {@link #onPause} to determine whether the activity is simply pausing or
* completely finishing.
*
* @return If the activity is finishing, returns true; else returns false.
*
* @see #finish
*/
public boolean isFinishing() {
return mFinished;
}
/**
* Returns true if the final {@link #onDestroy()} call has been made
* on the Activity, so this instance is now dead.
*/
public boolean isDestroyed() {
return mDestroyed;
}
Activity onDestroy() 調(diào)用研究
剛剛一個BUG讓我發(fā)現(xiàn),如果 activity 實(shí)現(xiàn)了一個回調(diào)接口,然后使用 this 設(shè)置給需要回調(diào)接口的方法,這種應(yīng)用場景比較常見,最常見的就是實(shí)現(xiàn) onClickListener 接口,然后 findViewById().setOnClickListenr(this)
如果,這個回調(diào)接口設(shè)置到了一個靜態(tài)對象(單例模式),當(dāng) activity finish() 的時候(按返回鍵,回到桌面),則activity 不會被調(diào)用 onDestroy() ,原因可能是 activity 對象還在被引用!
此時你再點(diǎn)擊圖標(biāo)回到應(yīng)用,onCreate() 再次調(diào)用!
很明顯,如果你把資源釋放放在了 onDestroy() 里面,就會導(dǎo)致內(nèi)存泄露!
那有沒有解決辦法呢?
有的 你可以在 onPause() 方法里面判斷 isFinishing() ,正常調(diào)用 finish() 后 activity 的回調(diào)過程是 onPause、onStop、onDestroy ,倘若出現(xiàn)上面的情況,只到 onPause!但是 isFinishing() 標(biāo)志還是為 true !你可以釋放資源了。
以上這篇Activity isFinishing()判斷Activity的狀態(tài)實(shí)例就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Android自定義scrollView實(shí)現(xiàn)頂部圖片下拉放大
這篇文章主要為大家詳細(xì)介紹了Android自定義scrollView實(shí)現(xiàn)頂部圖片下拉放大,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-12-12
Android 沉浸式狀態(tài)欄與隱藏導(dǎo)航欄實(shí)例詳解
沉浸式狀態(tài)欄是指狀態(tài)欄與ActionBar顏色相匹配,隱藏導(dǎo)航欄,就是將導(dǎo)航欄隱藏,去掉下面的黑條。下面通過實(shí)例給大家詳解android沉浸式狀態(tài)欄與隱藏導(dǎo)航欄,感興趣的朋友一起看看2017-07-07
kotlin android extensions 插件實(shí)現(xiàn)示例詳解
這篇文章主要為大家介紹了kotlin android extensions 插件實(shí)現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-10-10
Android自定義popupwindow實(shí)例代碼
這篇文章主要為大家詳細(xì)介紹了Android自定義popupwindow實(shí)例代碼,popupwindow彈出菜單效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-11-11
Android廣播實(shí)現(xiàn)App開機(jī)自啟動
這篇文章主要為大家詳細(xì)介紹了Android廣播實(shí)現(xiàn)App開機(jī)自啟動,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-05-05
Android安裝apk文件并適配Android 7.0詳解
這篇文章主要介紹了Android安裝apk文件并適配Android 7.0詳解的相關(guān)資料,需要的朋友可以參考下2017-05-05
安卓應(yīng)用開發(fā)通過java調(diào)用c++ jni的圖文使用方法
這篇文章主要介紹了2013-11-11

