Activity的isFinishing()判断Activity的状态
这里写一个准备一个关闭所有Activity的ActivityCollector
Activity的isFinishing()判断Activity的状态
public class ActivityCollector {private static List<Activity> activities = new ArrayList<Activity>();public static void addActivity(Activity activity) {activities.add(activity);}public static void removeActivity(Activity activity) {activities.remove(activity);}public static void finishAll() {for (Activity activity : activities) {if (!activity.isFinishing()) {activity.finish();}}}
}
这个.finish()和.isFinishing()?
在Activity中调用finish()或按返回键退出时,若有资源被其他对象引用不能释放(如context被某个单例对象引用或正在线程中被使用),则activity不会被调用onDestory()方法。
isFinishing() 可用来判断Activity是否处于活跃状态(false)还是等待回收状态(true)。
只有onDestroy()方法被调用后它才返回true
关于onDestory()的调用:
如果 activity 实现了一个回调接口,然后使用 this 设置给需要回调接口的方法,这种应用场景比较常见,最常见的就是实现 onClickListener 接口,然后 findViewById().setOnClickListenr(this) 【最常用】
如果,这个回调接口设置到了一个静态对象(单例模式),当 activity finish() 的时候(按返回键,回到桌面),则activity 不会被调用 onDestroy() ,原因可能是 activity 对象还在被引用!
此时你再点击图标回到应用,onCreate() 再次调用!
很明显,如果你把资源释放放在了 onDestroy() 里面,就会导致内存泄露!
网上找到的解决方法:
你可以在 onPause() 方法里面判断 isFinishing() ,正常调用 finish() 后 activity 的回调过程是 onPause、onStop、onDestroy ,倘若出现上面的情况,只到 onPause!但是 isFinishing() 标志还是为 true !你可以释放资源了。
Activity的isFinishing()判断Activity的状态相关推荐
- Activity 的 isFinishing()、isDestroy() 分析
结论: isFinishing() 用于判断 Activity 是否正在 finish. isDestroy() 用于判断 Activity 是否已经 destroy. isFinishing() 返 ...
- Activity 的 isFinishing()、isDestroy()
结论: isFinishing() 用于判断 Activity 是否正在 finish. isDestroy() 用于判断 Activity 是否已经 destroy. isFinishing() 返 ...
- android 进程被回收,Android开发进阶:Activity和进程的回收和状态恢复
不管是安卓的官方文档还是源码注释,处处可见"从 Activity A 跳到 Activity B,当系统内存不足时 A 可能会被回收--",而且没有明确说明 A 和 B 是否属于同 ...
- Activity生命周期的三种状态
生命周期就是一个对象从创建到销毁的过程,每一个对象都有自己的生命周期.同样,Activity也具有相应的生命周期,Activity的生命周期中分为三种状态,分别是运行状态.暂停状态和停止状态.接下来将 ...
- 什么是生命周期?Activity生命周期的三种状态
什么是生命周期 生命周期就是一个对象从创建到销毁的过程,每一个对象都有自己的生命周期.同样,Activity也具有相应的生命周期,Activity的生命周期中分为三种状态,分别是运行状态.暂停状态和停 ...
- android activity 回调函数,Android Activity的生命周期
Activity的生命周期 Android系统根据activity的所处不同阶段对应的唤起其特定的回调函数来执行代码.activity的一系列有序的生命周期回调函数.本文将来讨论下activity各阶 ...
- android中判断sim卡状态和读取联系人资料的方法
在写程序中,有时候可能需要获取sim卡中的一些联系人资料.在获取sim卡联系人前,我们一般会先判断sim卡状态,找到sim卡后再获取它的资料,如下代码我们可以读取sim卡中的联系人的一些信息. 读取的 ...
- android基础 [超级详细android Activity组件解析(Activity综述,Activity生命周期,Activity启动--携带参数启动)]
1 章节目录 2 Android Activity综述 2.1 Activity怎么用 2.2 layout - 界面布局 2.3 Java - 控制界面 2.4 AndroidManifest.xm ...
- android判断app前后台状态
项目中需要在应用从后台切换到前台时做操作,自己实现了功能,但对这块的机制不太了解,So.找了相关的资料来学习总结下. !!! 部分资料来源https://github.com/wenmingvs/An ...
最新文章
- 毕业仅1年,干Python赚了50W 网友:不是吹的
- 【MySQL】Dockerfile书写简单示例
- UITextField总结--博主总结的真好
- 怎么样做一个漂亮女人
- 中国各类基金资助项目英文翻译(中英文对照)
- 怎么写ERP实施方案?
- C++内存管理——指针数组
- 计算机在社区健康档案管理中的作用,某社区卫生中心对辖区居民的健康档案信息进行电子化。一直建档居民的年龄范围在1..._考试资料网...
- android mkdirs 不起作用,Android mkdirs()创建一个零字节文件而不是文件夹
- Unity 和腾讯游戏成立联合创新实验室:从技术创新探索游戏产品新模式和概念
- 创建ubuntu根文件系统
- 为您详细比较三个 CSS 预处理器(框架):Sass、LESS 和 Stylus
- 多元统计分析-联合分析
- 数据分析案例——航空公司客户价值分析
- 【LeetCode-13】-罗马数字
- 在一夜暴富之前,我先一夜秃了头
- binomial检验_SPSS中八类常用非参数检验之二:二项分布(Binomial)检验
- 各种说明方法的例句_11个说明方法句子
- android的视频直播,Android进行视频,直播播放
- 在VS中给源文件用文件夹分类/在VS中变更源文件路径
热门文章
- 2022最新SpringCloud Alibaba入门到精通超详细版文档,教你从0到1搭建一个微服务项目
- 无人机集群飞行控制思考
- html英文读法,48个英语音标发音表
- 自学英语的手机软件哪个好,负基础
- Electron 分享(入门,安装,打包)
- github找android源码,从github检查Android源代码
- W ndows10里安装Windows7,教你怎样把win10系统重装成win7
- Spring------基于xml的DI (一)设值注入、构造注入
- ubuntu1404 安装php5.6-fpm
- 全国各地出现巨坑,2012世界末日大预言