如何安全退出已调用多个 Activity 的 Application?
来源:互联网 发布:网络词凉凉是什么意思 编辑:程序博客网 时间:2024/06/06 08:42
原文链接:http://blog.csdn.net/a626361893/article/details/52013970
- 记录打开的Activity
- 每打开一个Activity,就记录下来,在需要退出时,关闭每一个activity。
- 发送特定的广播
- 在需要结束应用时,发送一个特定的广播,每一个Activity收到广播后关闭。
- 通过 intent 的 flag 来实现
- 实现intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP) 激活
一个新的 activity。此时如果该任务栈中已经有该 Activity,那么系统会把这个 Activity 上面的所有 Activity 干掉。其实相当于给 Activity 配置的启动模式为 SingleTop。
- 实现intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP) 激活
这里我们就来看看第一种方法是如何实现的
1.创建一个类(MyApplication)继承Application
- 1
2.创建一个用于存放activity的集合,这里可以创建一个Activity的基类,叫BaseActivty,让所有的Activity都继承它,在BaseActivity中我们可以写共性的方法或变量等。
- 1
- 2
3.添加3个方法,分别用于添加Activity,移除Activity,清空集合
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
到此,我们的MyApplication就实现了以上的功能,接下来只需要在BaseActivity中调用就可以了。
1.首先在onCreate方法中,获取到MyApplication的对象,并调用addActivity()方法。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
2.其次,在BaseActivity的onDestroy()方法中,我们将该Activity移除
- 1
- 2
- 3
- 4
- 5
写到这里,我们发现clearAllActivity()这个方法,该怎么被调用呢,如果我们退出了一个应用,那么自然的Activity都被销毁了,并且在实际开发中,按返回键,最后都会回到主界面的Activity中,然后,再连按两下,应用就退出了,这个在我们生活中很常见。
那么这个是怎么实现的呢?
其实就是在Activity的onBackPressed()方法中,计算出两次点击的时间差,如果在2秒内点击2次,就退出,否则就弹出Toast提示。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
好,我们回过来,在实际应用中,安全退出已调用多个Activity的Application,在某个应用场景下非常常见,那就是当你的账号在其他设备上登录了,那你这边的账号就会断开,并且重新跳转到登录界面,这个时候我们就要清空我们所有的任务栈。
在利用环信的sdk进行社交类应用的开发时,看到环信提供了一个监听的回调方法,我们可以重写其中的onDisconnected(int i),代码如下:
- 如何安全退出已调用多个Activity的Application?
- 如何安全退出已调用多个Activity的Application
- 如何安全退出已调用多个Activity的Application?
- 如何安全退出已调用多个Activity的Application?
- 如何安全退出已调用多个Activity的Application?
- 如何安全退出已调用多个Activity的Application?
- 如何安全退出已调用多个Activity的Application?
- 如何安全退出已调用多个Activity的Application?
- 如何安全退出已调用多个Activity的Application?
- 如何安全退出已调用多个Activity的Application?
- 如何安全退出已调用多个Activity的Application?
- 如何安全退出已调用多个Activity的Application?
- 如何安全退出已调用多个Activity的Application?
- 如何安全退出已调用多个Activity的Application?
- 如何安全退出已调用多个Activity的Application?
- 如何安全退出已调用多个Activity的Application?
- 如何安全退出已调用多个Activity的Application?
- 如何安全退出已调用多个Activity的Application?
- Eclipse+TestNG+ant+selenium++jenkins+svn自动化测试框架搭建
- 给action增加参数需要设置method为post
- 旋转的方块
- 前端为什么要做组件化
- Code signing is required for product type 'Application' in SDK 'iOS 10.0'
- 如何安全退出已调用多个 Activity 的 Application?
- 上传github项目
- 【POJ 2096】Collecting Bugs(概率与期望+dp)
- BZOJ 2844 albus就是要第一个出场(线性基)
- 同一个Fragment重复加载的问题
- 数据库中的范式学习
- 递归算法实现二分查找
- json 遍历的削笔机
- 有两个有序整数集合a和b,写一个函数找出它们的交集?