如何判斷ACTIIVTY是否已經被銷燬

判斷ACTIIVTY是否已經被銷燬

  一般會遇到這樣的情況:在一個Activity中啓動一個異步任務,異步任務中需要返回值,然後被Activity使用,但是當異步任務還未結束時,按下home鍵,如果這個時候系統內存比較緊張,這個Activity有可能被銷燬(如果使用小米手機進行真機調試,可以在開發者選項中開啓不保留活動選項),這個時候異步任務返回後會報異常,那如何解決這種問題,最簡單的辦法是在異步任務返回後做一下判斷,若Activity已經被銷燬了,則直接返回,不做任何處理。

  一般我們會使用activity.isFinishing()方法,若Activity被結束,這返回true,否則的話返回false。在實際的項目中發現這樣還不行,還需要使用activity.isDestoryed()方法來判斷activity是否被銷燬,但是有個問題是isDestoryed()方法支持的最低版本爲Level 17,那對於17版本以下的如何去處理呢?

  可以使用FragmentManager對象來判斷,即

        if(fragmentManager.isDestroyed) return;

API doc 下這樣寫道:

/**

* Returns true if the final {@link android.app.Activity#onDestroy() Activity.onDestroy()}
* call has been made on the FragmentManager's Activity, so this instance is now dead.
*/
public abstract boolean isDestroyed();

意思很明顯,如果Activity被銷燬的話,那麼fragmentManager 的實例也死亡了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章