Android 在按下Home键导致静态变量被破坏之前,系统是否有任何回调
我在Android 在按下Home键导致静态变量被破坏之前,系统是否有任何回调,android,Android,我在活动 // Cache object is holding other resources like thread handle, file handle. // Explicit clean up is required when it is no longer used. public static Cache cache = new Cache(); @Override public void onPause() { super.onPause(); if (thi
活动
// Cache object is holding other resources like thread handle, file handle.
// Explicit clean up is required when it is no longer used.
public static Cache cache = new Cache();
@Override
public void onPause() {
super.onPause();
if (this.isFinishing()) {
cache.cleanUp();
}
}
请注意,我需要进行正在完成
检查,如进行电话轮换、家庭按键、启动新活动。。。也将触发暂停。因此,由于这种“简单”的操作而拥有清理缓存,无法实现拥有缓存对象的目的
然而,在我的设计中存在资源泄漏的可能性
缓存
将变为空但是,我没有机会调用cache.cleanUpif(cache!=null) {
cache.cleanUp();
}
最好假设逻辑为“我将执行此操作,并且只有在缓存不为空时才执行此操作”主按键没有回调方法。如果你想在Home键上销毁你的应用程序,最好在back键上设置一个静态变量(onKeyUp和If keycode==back\u key)。和onPause方法,如果未设置该变量,则销毁该活动(finish();) 长按主页按钮。我的应用程序仍应出现在列表中。On::最近活动的列表不取决于终止您的活动等 在这种情况下,正如前面分配的一样,我们存在资源泄漏 旧的线程句柄(第一个缓存对象拥有的文件句柄)仍然存在 在系统中
GC会处理的。这就是你的应用程序被终止的原因。因此,这些内存将被清理并被其他应用程序使用。缓存在应用程序代码范围内永远不会为空,这不是问题中描述的当前问题。这些是线程句柄和文件句柄。您需要显式停止线程,并显式关闭文件。GC只负责内存。要添加,如果父引用(缓存)变为null,则子引用将变得不可访问,并在以后进行垃圾收集。@CheokYanCheng如果应用程序被销毁,则其拥有的所有句柄和线程也将被释放。总司令会在某个时候拿到的,我很困惑。你是说你的应用程序被破坏了还是你的活动被破坏了?如果应用程序被销毁,那么就不会有泄漏(除非GC中有bug,但这适用于所有应用程序)。如果活动已销毁,则必须调用onPause(),因为只有当活动不在前台时,活动才会被销毁。我不明白你的问题。