Application回收重启程序
来源:互联网 发布:js是面向什么的? 编辑:程序博客网 时间:2024/05/22 08:16
背景:
Android系统会自动回收退到后台的应用,我们可以运行一个后台Service,让我们的应用被回收的优先级变低,当时终归还是无法保证我们的进程被系统回收。
当系统被回收之后,我们缓存的一些数据也会被回收,当再次进入Activity的时候很可能会出现NULL指针异常。我们可以将数据持久化到本地,然后恢复Activity的时候从本地获取我们需要的数据。
有一些我们继承的第三方的sdk,当进程被回收之后,需要重新进行初始化,并不是简单的恢复数据就能解决的,这个时候我们可以考虑在进程被回收之后重新跳转到登陆界面进行重新登陆。
解决方案
当进程被回收再次进入到应用的时候,Activity的onCreate方法传入的savedInstanceState != null,平时进入的时候=null,我们可以根据这个进行判断是否结束该Activity,直到我们不需要结束的Activity。我这种方案,当你的应用通过savedInstanceState保存Activity的数据进行恢复的时候就不适用了。这个时候你可以根据Application中缓存的数据做为null判断 。
1、定义一个成员变量allowAutoFinish = true;
2、在BaseActivity中加入
@Overrideprotected void onCreate(Bundle savedInstanceState) { //应用异常重启该Activity if(savedInstanceState != null){ if(allowAutoFinish){ finish(); } }
3、在不需要退出的Activity中加入
@Overrideprotected void onCreate(Bundle savedInstanceState) { //当应用异常退出重启Activity时,不结束LoginActivity allowAutoFinish = false; super.onCreate(savedInstanceState);}
这样,当应用退出到后台,Application被回收之后,再次进入,就会直接回到登陆界面。
可以用DDMS中的kill process模拟进程被回收。也可以疯狂启动手机的应用,让应用背系统回收。
0 0
- Application回收重启程序
- 重启程序
- 重启程序
- VC++, 重启程序
- 定时重启程序
- 自动重启程序
- Shell 重启程序
- QT重启程序
- HOW TO:重启程序(WinForm)
- 一个简易的重启程序
- linux 定时重启程序脚本
- C#不重启程序读取appconfig
- 全部捕获异常之后重启程序
- 能定时重启程序,不断循环.重启程序时关闭老程序
- linux下通过脚本实现自动重启程序
- linux下通过脚本实现自动重启程序
- linux下通过脚本实现自动重启程序
- linux下用脚本语言开发自动重启程序
- 服务器之间拷贝文件
- h5 图像、音频、视频 object标签
- jquery通过on绑定事件,停止冒泡不起作用
- java(Web)中相对路径,绝对路径问题总结
- Hibernate反向工程
- Application回收重启程序
- Android Studio导入framework.jar等系统jar包方式
- 2017版的pycharm注册码
- eclipse中 jetty启动maven web项目 ClassNotFoundException net.sf.json.JSONObject
- Linux命令行与shell脚本(14)--在函数中使用数组
- 浅谈HTML5的FormData对象
- UIImageView 渲染模式改变Image的渲染颜色
- Kingbase连接情况查询
- shell脚本编写规范