当前位置: 首页 > 编程笔记 >

Activity isFinishing()判断Activity的状态实例

娄森
2023-03-14
本文向大家介绍Activity isFinishing()判断Activity的状态实例,包括了Activity isFinishing()判断Activity的状态实例的使用技巧和注意事项,需要的朋友参考一下

在Activity中调用finish()或按返回键退出时,若有资源被其他对象引用不能释放(如context被某个单例对象引用或正在线程中被使用),则activity不会被调用onDestory()方法。

isFinishing() 可用来判断Activity是否处于活跃状态(false)还是等待回收状态(true)。

isDestroyed() 根据源码注释可知,只有onDestroy()方法被调用后它才返回true,因此实际用处不大。

查看源代码中的注释:

/**
 * Check to see whether this activity is in the process of finishing,
 * either because you called {@link #finish} on it or someone else
 * has requested that it finished. This is often used in
 * {@link #onPause} to determine whether the activity is simply pausing or
 * completely finishing.
 *
 * @return If the activity is finishing, returns true; else returns false.
 *
 * @see #finish
 */
public boolean isFinishing() {
 return mFinished;
}
/**
 * Returns true if the final {@link #onDestroy()} call has been made
 * on the Activity, so this instance is now dead.
 */
public boolean isDestroyed() {
 return mDestroyed;
}

Activity onDestroy() 调用研究

刚刚一个BUG让我发现,如果 activity 实现了一个回调接口,然后使用 this 设置给需要回调接口的方法,这种应用场景比较常见,最常见的就是实现 onClickListener 接口,然后 findViewById().setOnClickListenr(this)

如果,这个回调接口设置到了一个静态对象(单例模式),当 activity finish() 的时候(按返回键,回到桌面),则activity 不会被调用 onDestroy() ,原因可能是 activity 对象还在被引用!

此时你再点击图标回到应用,onCreate() 再次调用!

很明显,如果你把资源释放放在了 onDestroy() 里面,就会导致html" target="_blank">内存泄露!

那有没有解决办法呢?

有的 你可以在 onPause() 方法里面判断 isFinishing() ,正常调用 finish() 后 activity 的回调过程是 onPause、onStop、onDestroy ,倘若出现上面的情况,只到 onPause!但是 isFinishing() 标志还是为 true !你可以释放资源了。

以上这篇Activity isFinishing()判断Activity的状态实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持小牛知识库。

 类似资料:
  • 本文向大家介绍android判断一个Activity是否处于栈顶的实例,包括了android判断一个Activity是否处于栈顶的实例的使用技巧和注意事项,需要的朋友参考一下 实际开发中我们需要很多情况需要判断某个activity是否位于栈顶,也许会给新的小伙伴带来困扰,那么直接上代码吧,也没几行 以上这篇android判断一个Activity是否处于栈顶的实例就是小编分享给大家的全部内容了,希望

  • 本文向大家介绍Android编程之判断SD卡状态的方法,包括了Android编程之判断SD卡状态的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Android编程之判断SD卡状态的方法。分享给大家供大家参考,具体如下: 首先我们要在AndroidManifest.xml中增加SD卡访问权限: 接着我们写一个通用类来保存SD卡相关的操作及状态检查: 一个字段是判断SD_EXIST,tr

  • 本文向大家介绍Android中判断网络连接状态的方法,包括了Android中判断网络连接状态的方法的使用技巧和注意事项,需要的朋友参考一下 App判断用户是否联网是很普遍的需求,实现思路大概有下面几种 利用Android自带的ConnectivityManager类 有时候连上了wifi,但这个wifi是上不了网的,我们可以通过ping www.baidu.com来判断是否可以上网 也可以利用ge

  • 本文向大家介绍举例说明html5怎么判断网络状态?相关面试题,主要包含被问及举例说明html5怎么判断网络状态?时的应答技巧和注意事项,需要的朋友参考一下 // var state=window.navigator.onLine; // if(state){ // alert("在线的"); // }else{ // alert("不在线"); // } //两个事件,联网就触发第一个,没网就立刻

  • 本文向大家介绍Android判断软键盘的状态和隐藏软键盘的简单实例,包括了Android判断软键盘的状态和隐藏软键盘的简单实例的使用技巧和注意事项,需要的朋友参考一下 之前本人也遇到一个关于获取软键盘的状态的问题,在网上找了很多资料,基本上回答都是用getWindow().getAttributes().softInputMode==WindowManager.LayoutParams.SOFT_

  • 本文向大家介绍Android判断Activity是否在最上层的方法,包括了Android判断Activity是否在最上层的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Android判断Activity是否在最上层的方法。分享给大家供大家参考,具体如下: 更多关于Android Activity相关内容感兴趣的读者可查看本站专题:《Android编程之activity操作技巧总结》