如何应对activity被kill
来源:互联网 发布:高胡seo博客 编辑:程序博客网 时间:2024/06/05 13:29
转载:http://www.cnblogs.com/bjzhanghao/archive/2012/11/08/2759948.html
转载:http://blog.csdn.net/cuiran/article/details/38851401
通常在一部Android手机里同时运行着多个应用(app),每个app对应一个系统进程,当系统需要更多的资源(如内存)而空闲资源不足时,Android系统就会选择杀掉一些“低优先级”的进程以便释放所需资源。
Android系统是如何确定进程优先级的高低的呢?
- 如果一个app正在与用户交互,那么它所在的进程具有最高优先级;
- 其次,如果一个app是可见的,例如被一个对话框部分遮挡,它所在进程具有第二高的优先级;
- 再次,如果app当前是不可见的,也就是被切换到了后台,则它所在进程具有第三高的优先级;这里要补充一点,如果这个后台app启动了一个service,则它比一般的后台app优先级高一些。
- 最后,如果一个进程里没有包含任何app,这个进程的优先级是最低的。
优先级别划分:
1.前台进程( FOREGROUND_APP) 2.可视进程(VISIBLE_APP ) 3. 次要服务进程(SECONDARY_SERVER ) 4.后台进程 (HIDDEN_APP) 5.内容供应节点(CONTENT_PROVIDER) 6.空进程(EMPTY_APP)
当系统资源严重不足时,任何一个进程都有可能被杀掉,而当用户想回到一个已经不存在于内存中的Activity时,系统只得新建一个这样的Activity对象并调用它的onCreate()方法进行恢复。所以有时出现这种状况:一个app大部分时间运行很好,偶尔在切换Activity时出现空指针异常导致强制关闭,这多半是在onCreate()方法里使用了已经被重置为空的对象(例如intent里的变量)造成的。即使不出现异常,也会造成表单数据丢失等严重影响使用体验的问题。
解决方案:1.google建议方案:在适当的位置将Activity所需数据进行持久化(从ram复制到rom或sd卡),并在onCreate()方法里利用这些数据恢复现场。
在onPause()里持久化Activity数据,在onCreate()里恢复现场。
2.新建一个Service,在后台服务定时去检测对应package是否在运行,若没有运行就发送广播告知。
0 0
- 如何应对activity被kill
- [Android问答] 如何应对Activity进程被杀?
- 关于Activity被kill时保存数据
- 菜鸟 该如何应对服务器被黑
- app被kill再次启动时系统会恢复被kill时的activity
- 如何防止android程序被kill掉
- 如何防止android程序被kill掉
- 如何防止android app被kill
- 如何防止android程序被kill掉
- 如何防止android程序被kill掉
- 如何防止android app被kill
- 如何防止android app被kill
- Activity暂停时kill进程
- 如何应对工作压力
- 如何应对外语面试
- 如何应对保险经纪资格考试
- 如何应对电脑辐射
- 如何完美应对面试
- 超级简单的自定义PopupWindow 子控件的四个方向 底部
- 自适应网页设计(Responsive Web Design)
- 最短路径的实现
- MongoDB 学习笔记五 MapReduce
- c语言const、volatile问题小结
- 如何应对activity被kill
- Mars老师的Android学习基本路线
- jQuery Autocomplete 自动补全功能
- resource综合介绍
- js中单选,反选,联动选择等等
- flume-ng与flume-og的区别
- 个人所得税计算
- dubbo教程系列1
- mysql5.7.9正式版安装