博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Activity详解
阅读量:5149 次
发布时间:2019-06-13

本文共 1346 字,大约阅读时间需要 4 分钟。

Activtiy:呈现给用户的界面,它有7个生命周期,来控制activity;

    

转至

通常在一部手机里同时运行着多个应用(app),每个app对应一个系统进程,当系统需要更多的资源(如内存)而空闲资源不足时,Android系统就会选择杀掉一些低优先级的进程以便释放所需资源,这也是Android开发与PC桌面开发不同的之处。

  Android系统进程优先级的高低通常是这样判断的:
        1)如果一个app正在与用户交互,那么它所在的进程具有最高优先级;
        2)如果一个app是可见的,例如被一个对话框部分遮挡,它所在进程具有第二高的优先级;
        3)如果app当前是不可见的,也就是被切换到了后台,则它所在进程具有第三高的优先级;
        4)如果这个后台app启动了一个service,则它比一般的后台app优先级高一些;
        5)最后,如果一个进程里没有包含任何app,那么这个进程的优先级是最低;
  当系统资源严重不足时,任何一个进程都有可能被杀掉,而当用户想回到一个已经不存在于内存中的Activity时,系统只得新建一个这样的Activity对象并调用它的onCreate()方法进行恢复。因此有时就会出现如下情况:大部分时间运行正常,偶尔在切换Activity时出现空指针异常导致强制关闭,这多半是在onCreate()方法里使用了已经被重置为空的对象造成的。即使不出现异常,也会造成表单数据丢失,严重影响用户体验。

要解决这类问题:

  1)不能抱现在手机内存大,进程一般不会被杀掉的侥幸心理,而应该以app随时都会被杀掉的态度来谨慎处理。
        2)在适当的位置将Activity所需数据进行持久化(从ram复制到rom或sd卡),并在onCreate()方法里利用这些数据恢复现场,通常包括文档类型和用户状态类型。
        对于文档类型:当用户离开当前Activity时,在onPause()方法里将当前正在编辑的文档持久化到SQLite或者XML文件中,若当前Activity被杀死,可在onCreate()方法中恢复。
       对于状态类型:可通过SharedPreferences在onPanse()方法中将当前状态信息保存,比如保存某个应用的视图配置信息,若当前Activity被杀死,可在onCreate()方法中恢复,这样就可以确保一个较好的用户体验。

  注意事项:

  1)通常在onPause()里持久化而不是在onSaveInstanceState()里,是因为前者比后者更可靠,因为onSaveInstanceState()不属于Activity生命周期的一部分,在onPause()里做持久化比较方便,缺点是调用次数稍多。
        2)从Android 3.0版本开始,Activity进程在被系统杀掉之前,将保证onStop()方法先执行完成,因此如果我们开发的应用只运行在3.0以上,可以把持久化工作放在onStop()里以减少持久化的次数。
  总之一句话:在onPause()或者onStop()里持久化Activity数据,在onCreate()里恢复现场。

         

转载于:https://www.cnblogs.com/ransky/p/5805927.html

你可能感兴趣的文章
CentOS 安装jira 6.3.6
查看>>
按钮UIButton的使用
查看>>
C++利用SOAP开发WebService
查看>>
ToDo
查看>>
Hadoop入门经典:WordCount
查看>>
BZOJ-1029 建筑抢修
查看>>
tornado基础入门(一)——简单了解tornado
查看>>
WebSocket 协议
查看>>
【BZOJ 4103】 [Thu Summer Camp 2015]异或运算 可持久化01Trie
查看>>
数据类型
查看>>
CodeForces - 566F Clique in the Divisibility Graph
查看>>
CodeForces - 986C AND Graph
查看>>
[JZOJ5455]【NOIP2017提高A组冲刺11.6】拆网线
查看>>
【MySql】Order By 排序
查看>>
jQuery选择器
查看>>
spring字符编码filter
查看>>
thinkphp5省市区三级联动例子
查看>>
让HttpClient不要打印巨多的日志
查看>>
场和帧的 关系(转)
查看>>
verilog 有符号数(2转)
查看>>