Activity onDestroy() 回調緩慢問題分析及完美解決方案


  說到Activity的onDestroy,對所有的Android開發者都很熟悉,但是不一定都知道里面存在着一些坑,分享給大家,以后踩中的時候可以應急

用Activity的時候,會發現如下問題:

  有時候會發現Activity的onDestroy方法回調比較緩慢(可以達到好幾秒鍾之后才調用),即使之前使用finish方式關閉Activity也一樣

onDestroy回調慢帶來什么問題呢?

  有可能再次打開Activity的時候,都走完了onCreate,onResume之后上一次的onDestroy方法才被調用,想想如果在onResume和

onDestroy中共同維護了一個變量(isActivityShowing --> Activity是否正在顯示),這個時候這個狀態就錯了。

解決方法與建議

  所以建議不要在Activity的onDestroy方法中做有關於數據存儲,狀態維護的事情,回收資源也最好不要完全依賴這個方法,可以用下面的方式

比較靠譜的解決方式

    private boolean isDestroyed = false;

    private void destroy()  {
        if (isDestroyed) {
            return;
        }
        // 回收資源
     isDestroyed = true;
    }

    @Override
    protected void onPause() {
        super.onPause();
        if (isFinishing()) {
            destroy();
        }
    }

    @Override
    public void onDestroy() {
        destroy();
    }

 

試了一下,只有走回收流程的時候(返回鍵)的那種onPause,isFinishing才為true

普通的切到后台或者另外一個Activity蓋上來的是那個isFinishing是false

 

 

參考了另外一篇文章:http://blog.csdn.net/z1074971432/article/details/10517449


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM