說到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