如何应对activity被kill
2015-10-30 10:24
197 查看
转载: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,这个进程的优先级是最低的。
优先级别划分:
当系统资源严重不足时,任何一个进程都有可能被杀掉,而当用户想回到一个已经不存在于内存中的Activity时,系统只得新建一个这样的Activity对象并调用它的onCreate()方法进行恢复。所以有时出现这种状况:一个app大部分时间运行很好,偶尔在切换Activity时出现空指针异常导致强制关闭,这多半是在onCreate()方法里使用了已经被重置为空的对象(例如intent里的变量)造成的。即使不出现异常,也会造成表单数据丢失等严重影响使用体验的问题。
解决方案:
1.google建议方案:在适当的位置将Activity所需数据进行持久化(从ram复制到rom或sd卡),并在onCreate()方法里利用这些数据恢复现场。
在onPause()里持久化Activity数据,在onCreate()里恢复现场。
2.新建一个Service,在后台服务定时去检测对应package是否在运行,若没有运行就发送广播告知。
转载: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是否在运行,若没有运行就发送广播告知。
相关文章推荐
- eclipse背景颜色修改插件color theme
- asp.net ajax请求总结
- C# 哈希表
- 一根香蕉防治八种病
- 恢复sudo的权限的命令
- 3-5年的PHPer常见的面试题
- 刚刚从微博转到博客,筛选一下不是随手记录的东西转过来,这是一个tableviewcontroller的发现
- 【递归】:poj2698,八皇后问题
- 安卓源码--添加root权限
- C语言整理-10
- pjsip项目概要及c语言面向对象方法实现
- spring web mvc 详解
- 有关报表服务器运行正确,但嵌入到网页中提示因 HTTP 状态 401 失败: Unauthorized。
- 总结oninput、onchange与onpropertychange事件的用法和区别
- 《如何策划一个有逼格的竞价专题页面》有感
- Android ORM数据库框架之-greenDao(四)
- 自适应网页设计(Responsive Web Design)
- 10月27日全球域名商解析新增量TOP20:爱名网第三
- html中使用js进行登录md5加密提交并重定向新页面
- Supporting Multiple Screens