欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

故事讲解Activity生命周期(猫的一生)

程序员文章站 2022-06-30 08:26:06
大家好,关于android中activity的生命周期,网上大多数文章基本都是直接贴图、翻译api,比较笼统含糊不清。 我就用故事来说一说: 有个人叫user,ta...

大家好,关于android中activity的生命周期,网上大多数文章基本都是直接贴图、翻译api,比较笼统含糊不清。

故事讲解Activity生命周期(猫的一生)

我就用故事来说一说:

有个人叫user,ta养了几只猫,有只猫叫activity。user见证了activity猫的一生。

故事讲解Activity生命周期(猫的一生)

user想要一只小猫(想用一些功能),于是让一只母猫和一只公猫交配(触摸屏幕打开activity界面),

之后经过母猫一段时间的孕育(activity launched),小猫咪出生了(oncreate),取名叫activity,放在笼子(app)里养。

主人把它抱出来,小猫咪activity醒来(onstart)睁开眼(onresume),转转头、伸伸爪子、哭闹着要吃东西...(activity running)。

然后主人喂食、和它玩(用户在activity上的操作)...

user觉得和activity一起的时间差不多够了,就(打开新的activity)把它关进笼子,和其它猫一边玩去了(another activity comes into the foreground)。

activity就开始闭目养神(onpause)...

过了一会儿,主人打开笼子,呼唤它的名字(user returns to the activity),它听到后马上睁开眼(onresume)跑过去和主人玩耍(activity running)...

后来主人又把它关起来然后走了,activity继续闭目养神(onpause)...

再后来主人把灯关了(the activity is no longer visible),activity感觉天黑了就睡了(onstop)...

不知道什么时候,主人又回来了,一边敲笼子、一边叫着activity的名字(user navigates to the activity),

activity被从美梦中拉回了现实世界,恢复了状态(onrestart),然后醒来(onstart)睁开眼(onresume)...

就这样不知不觉过了很久...

有一次主人(按下主页、多任务或电源按钮)出远门了,好久没回来,家里的食物不够,很快就被大家吃光了(apps with higher priority need memory)。

由于activity很弱小(优先级低)、还被关在笼子里(没有绑定前台service),所以吃到的食物很少。

几顿饥渴后大家都饿昏了,纷纷进入休克状态(app process killed)。

主人回来时看到可怜的activity一动不动地躺着,怎么都叫不醒,就赶紧送去兽医院抢救(user navigates to the activity)。

医生给它输了血和营养等(系统重新分给内存),经过一段时间后activity终于复活了,它感觉好像重新从妈妈的肚子里出来一样(oncreate)。

它醒来(onstart)睁开眼(onresume),和主人打打闹闹(activity running),过了一会儿主人就带着它回家了...

俗话说,大难不死必有后福,之后主人确实对activity照顾有加。

可是天有不测风云,有一天activity被一个坏蛋弄死了(the activity is destroyed by the system)。

activity死了(ondestroy),user很伤心地把它埋了(activity shut down)...

user很留恋和activity在一起的时光,心有不甘,于是重新要了一只小猫,名字仍然叫activity...

activity一天天长大,主人对它非常宠爱,但它却越来越叛逆。

终于有一天,主人受够了,觉得activity实在太可恶(或者没有利用价值)就(点击返回按钮)把它抛弃了(the activity is finished)...

activity不适应外部恶劣的环境很快就死了(ondestroy),大自然用风和泥土把它埋葬(activity shut down)...

这就是activity猫的一生。

zblibrary提供了isalive()、isrunning()等判断activity、fragment生命周期状态的方法;

以及runuithread(runnable runnable)方法来避免直接runonuithread(runnable runnable)导致在ondestroy后运行崩溃;

还有线程管理类threadmanager,baseactivity、basefragment内可以runthread(string tag, runnable runnable)很方便地新开线程,

ondestroy后自动释放,不用担心直接new thread(runnable).start()在ondestroy后还在运行浪费资源,甚至使用被回收的变量导致崩溃等问题。

zblibrary-android快速开发框架

故事讲解Activity生命周期(猫的一生)

下载试用

zblibrarydemoapp.apk

下载地址(觉得不错就star支持下吧^_^)

https://github.com/tommylemon/android-zblibrary

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!