Activity关闭的时候没有调用onDestroy的情况:
1、activity被手机内存强制回收是不会调用
2、外部强制关闭进程,或者异常崩溃的时候
阿里开发规范也要求:
【推荐】不要在 Activity#onDestroy()内执行释放资源的工作,例如一些工作线程的
销毁和停止,因为 onDestroy()执行的时机可能较晚。可根据实际需要,在
Activity#onPause()/onStop()中结合 isFinishing()的判断来执行。
网上有人写的:
可以参考:
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();//需要在onDestroy方法中进一步检测是否回收资源等。
}
参考:
https://blog.csdn.net/Heijinbaitu/article/details/79153635
1、activity被手机内存强制回收是不会调用
2、外部强制关闭进程,或者异常崩溃的时候
阿里开发规范也要求:
【推荐】不要在 Activity#onDestroy()内执行释放资源的工作,例如一些工作线程的
销毁和停止,因为 onDestroy()执行的时机可能较晚。可根据实际需要,在
Activity#onPause()/onStop()中结合 isFinishing()的判断来执行。
网上有人写的:
可以参考:
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();//需要在onDestroy方法中进一步检测是否回收资源等。
}
参考:
https://blog.csdn.net/Heijinbaitu/article/details/79153635