Activity

什么是Activity

Activity 大部分人都叫活动,可我个人觉得,Activity其实就是一个容器的,里面装载着各种各样的view视图,并且对各种视图进行事件处理,信息的控制等

什么是activity的生命周期

首先明白一点,生命周期强调的是周期,说白了,就是它的出现到消灭,那什么要有它的生命周期呢,为什么不直接创建,再null,不就完成整个生命周期了吗?但是别忘记了,activity是androd手机系统的4大组件之首,
一,我们的app是为了用户使用,你直接new,再null,还有什么意义呢,
二,activity是4大组件之首,是直接与用户交互的,它直接销毁了,那还谈什么交互,我们肯定要有一个完整的生命周期,让我们合理的使用activity, 充分利用它的生命周期,让它在每个生命阶段完成它该要做的事。

activity正常情况下

从activity正常的活动周期来看,什么意思呢,就是它一生,没有遇到坑,从出生到死亡,活得都很好,那怎样看呢,直接看图中间的方法关键字
Activity Launched –> onCreate() – > onStart() –> onResume –> onPurase() –> onStop() –> onDestory() –> Activity shut down

我们先看这几个方法,其它先不用看,我们先看的是activity正常生命周期的时候

Activity Launched : 这个的是意思是activity启动,记住,只是启动,它还没有任务生命周期的特征

onCreate() : 我们的第一个生命周期,这个是说,我们的activity创建时被调用 ,但是并不是说这个方法创建了activity,记住,也只是创建时这个方法被调用而已,现在什么在界面上也看不到,那它的作用是什么呢,什么也看不到,当然是做准备工作了,比如创建视图对象,这个知道为什么setcontentview在这里写了吧,就是做准备工作的,其它不是它该做的事,同样还有加载数据等等所有的操作都在这里执行。

onStart(): 这个方法是我们的activity进入可见状态,但是,这个时候还不能交互,也就是说在这个状态下,你在界面上做什么,都没有反应,那这个方法,我们有什么用呢,我们可以做一些初始化,

 那就有人问了,刚刚说oncreate方法就是初始化的啊,怎么在这也可以初始化,感谢你有这种想法,我以前学习生命周期的时候,也是,怎样也不懂,一会这样,一会那样,但是,就是可以,没有为什么,大家学了那么久,没有感觉到大部分问题的答案都是没有为什么,本来就是那样的,好吧,继续,是可以初始化的,但是呢,是非严格必须的东西,比如可以在这里注册广播接收者等。

1
onResume(): 这个方法,是所有activity的生命周期的最终期待,因为它这个时候,已经可以进行交互了,在这里能看到最终的布局效果,这是大家都期待的,大家可以测试一下,一个界面的显示,是从oncreate -> onstart -> onResume 一下走了三个方法,才可以进行交互的时候

onPause() : 这个方法是不好了,因为这个方法,表示当前activity不能交互了,就是说不能响应用户操作了,但是,这个时候,activity还是可以看到的,在这里,可以暂停动画等界面效果,

有人就说了,不能交互但是可以看到,是什么东西,其实就是有其它窗口遮盖了acitivity,比如一个对话框出现 ,后面的activity是可以看到的,但是不能交互
1
onStop():这个方法表示activity已经不可以看到了,什么不可见了,在这里,我们应该保存数据,停止一些消耗资源的事件,防止在不可见状态下被回收

onDestroy(): 这个方法就一切完了,这个方法将销毁所有视图,在这里应该释放一切占用的资源,比如 停止播放,网络请求等所有操作,只是销毁视图,不是销毁 activity 对象,

以上,就是一个activity正常情况下,所经历的生命周期,就像一个人一样,从出生(onCreate),童年(onStart)青年(onReume),中年(onPaused),老年(onStop),死亡(onDestory), 但是,这样只是acticity所经历的生命周期时的方法,不是说oncreate就是activity被创建了,onDestory时,activity就被销毁了,只能说oncreate方法,就在actictity已经被系统创建后,调用了oncreate方法而已,而activity消失是gc的事,和onDestory更没有关系,请记住!

下面,我们继续讨论activity不正常的时候, 它经历了哪些方法,大家现在再看一下图,我们刚刚已经分析了中间的那几个方法,还剩下两个的方法

activity不正常情况下:

什么叫不正常情况下,就是说,一个人好好的走路呢,属于正常走路的情况,突然有事找他,或者这家伙打的走了,都不属于正常的走路情况

activity正常情况一:

有多个activity出现的时候,我们刚刚已经知道,我们的activityA是在onResume方法进行与用户交互的,这个时候用户不想和我们的activityA进行交互了,想与activityB进行交互,怎样办啊,没办法,用户是上帝,那我只好让activityB喽,那我该怎样让呢,别忘记了,我们现在还和用户交互呢,只不过我们在0.01秒后,不和用户交互,那我就先让自己停下onpaused , 现在这个时候,我还是可以看到的,所以 onstop方法没有被调用,有人说了,activityB都出现了啊,是,你说的是,但是你说了,是activityB都出现了,activityA不应该出现的啊,对了,看activityB出现的时候,activityA才不可见!这个时候才调用activityA, onstop方法,很多人在这里不清楚,觉得是B出现之前, A的onstop方法已经被调用,其实不是, 是B出现了,A才调用onstop方法的, 当B不见时,这个时候activtyA调用onrestart方法 -》 onstart 方法 - 》 onresume方法,等等,这样就和图中一致了吧

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值