加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

Android 系统中 Activity的生命周期

(2014-11-12 14:55:41)
标签:

it

软件

android

activity

oncreate

分类: 我的IT

IOS系统玩了一个很精明的计策在于当软件发生卡顿时,不给软件片刻等待的机会,直接退出,这也是为什么有人说苹果手机有闪退现象,却不承认它卡顿的原因,所谓的流畅性,只不过是牺牲了等待间隔为代价罢了,可怜Android太傻,一直在那傻傻的等了5秒,这五秒的等待给了用户以卡顿感,造成了不友好的体验,就像两个人恋爱,有人愿意等你你觉得别人的烦,有人索性直接分手走的痛快    --前言

 

Android手机在打开一个软件界面去运行到软件退出,分为7几个状态.分别是 onCreate() 创建状态, onStart() 开始状态 onResume() 运行状态 onPause() 暂停状态 onStop()停止状态  onRestart()重激活状态和onDestory() 销毁状态 

 

例如我们打开新浪微博,点击图标到加载出微博界面(即一个Activity)过程,分别初始化了 onCreate() ,onStart()  和onResume() 状态,在这三个过程中,onCreate() 在Activity生命周期中只发生一次,常做一些初始化操作,比如一些界面控件,文本框等,当这些初始化信息完成后,一个页面算是构建完成,这时系统会调用onStart()状态开始显示加载出一些数据,而当用户与软件做交互,比如下拉查看微博,发微等操作时,onResume()状态就被激活了,此时软件介面的Activity处运行状态. 在运行过程中,如果用户打开一张图片,如果图片内容没有完全覆盖微博显示介面,那么此时便会调用onPause()暂停状态,当用户按返回键,返回微博介面时,此时便会重新调用onResume()状态,激活软件介面,而当图片内容完全覆盖了软件介面,或点击一个链接调转到了一个新的页面,此时Activity会先调用onPause()后调用onStop()停止状态,而当用户查看过图片,或看完了链接中的信息,返回主介面时,处于停止状态的Activity便会调用onRestart()状态 重新被激活,接着调用onStart()开始状态,重新返回onResume() 运行状态. 这便是Activity周而复使的生命周期,最后当用户退出该软件时便调用了onDestory()销毁状态.

 

以上是描述了Android手机中人与软件正常交互的过程产生的状态,如果用户在刷微博的过程中来了电话或短信,或不按返回键直接按了Home键退出软件,这时软件属于非正常退出,这时退出前便会调用Activity中的onSaveInstanceState(Bundle outState)方法来处理突发操作,用来保存用户的操作记录,待用户接过电话再次打开软件介面时便会调用onRestoreInstanceState(Bundle savedInstanceState)方法去恢复上次用户的非正常操作导致的软件退出,另一种异常便是卡顿的产生,当用户打开一个超大长图或看视频传输过程中发生了传输错误,等非法未知错误时软件便发生卡顿现象,这时软件无法处理用户的操作而交由Android系统去判别是否发生了异常,Android系统在底层设计用软件主线程在5秒内是否活跃来判断软件是否发生了运行错误,如果5秒内系统得不到软件的反馈便断定该软件发生卡顿现象,于是系统便强行退出该软件,即强制杀死该主线程. 而IOS系统没有给予软件等待的时间,一旦系统与主线程通信异常,便强行退出软件,故发生了所谓的闪退.

 

最后讲一个Android系统的内存管理机制,Android系统的内存管理机制属于操作优先的原则,即当一个系统后台有多个软件在运行时,如果内存紧张,系统便会强制杀死多余的不活跃进程,去为当前与用户交互的软件负责,即我有2G内存系统会分配2G的使用方法,我有512M内存,系统也会自动分配出512M内存的运行方式,所谓内存越大越好,只不过是增加了后台软件的运行量罢了,与交互软件的操作无关.  现阶段对于Android4.0以上的系统而言,1G运行内存完全可以够用户流畅运行日常使用软件,当然这也是相对的,游戏玩家升能到3G内存也会觉得的卡,QQ微博用户感觉1G也足够用,这取决于你怎么样去玩手机.

 

最后附上Activity的生命周期图,文章若有异意者,欢迎斧正交流:

 http://s2/mw690/002Ff7YUgy6NyiMQ3O951&690系统中 Activity的生命周期" TITLE="Android 系统中 Activity的生命周期" />

 

0

阅读 收藏 喜欢 打印举报/Report
前一篇:别人的爱情
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有