Android学习(5)-活动的生命周期

上一篇博文是关于活动的介绍,包括如果和创建活动,活动之间如何彼此调用,如何传递数据等。现在讲一讲活动的生命周期,了解生命周期之后,对活动会有一个更加清晰的了解,更能灵活的运用应用资源。

(1)Android中的活动是可以层叠的,一个压在另一个上面,返回的时候销毁自己,呈现下一个活动。

(2)Android中使用任务来管理活动,一个任务中是一组存放在栈里面的活动,入栈出栈就和活动的更替一样一样的。

(3)活动的状态有四种:运行状态,现在最当前的活动就是运行的;暂停状态,能够看到的但不是最靠前的活动,比如说现在最靠前的是一个对话框,只是占用了一部分屏幕;停止状态,非栈顶的你还看不到的,通过返回可以看到的都是停止的;销毁状态,通过栈顶移除的都是销毁了。

(4)Activity中定义了七个回调方法:

onCreate(): 活动被创建的时候调用,每一个活动我们都要重写这个方法,方法中主要用于初始化操作,如加载布局和绑定事件等。

onStart(): 活动由不可见变成可见的时候。

onResume(): 活动此时一定位于栈顶,处于运行状态。是活动准备好和用户进行交互的时候调用

onPause(): 当系统准备启动或者恢复另一个活动的时候调用。此时可以清理资源或者记录一些关键数据。如新活动是一个对话框。

onStop(): 当活动完全不可见的时候调用,和onPause相似,但针对情况不太一样。

onDestroy(): 当活动销毁前调用。

onRestart(): 活动由停止状态变为运行状态之前调用。


可分类:

完整生存期: onCreate onDestroy

可见生存期:onStart onStop

前台生存期: onResume onPause


举个例子:

创建三个活动:MainActivity  NormalActivity DialogActivity【对话框,不会占满屏幕】,在MainActivity中有两个按钮,点击之后可以启动另外两个活动。

当MainActiviy启动时,分别为onCreate【创建】--onStart【变为可见】--onResume【等待交互】,当点击按钮启动NormalActivity时,,onPause【回复另一个活动】--onStop【完全不可见】,当从normla中返回到main时,onRestart--onStart-onResume.

当点击第二个按钮的时候,onPause方法执行,当返回时只有onResume方法执行。


(5)活动被回收了如何办?

当活动变为停止状态之后,可能被回收。那么当返回到这个界面是,就创建onCreate方法重新创建一个。那么被回收的活动中可能有一些临时数据就木有了,必须找一种方式能够保存这些临时数据。那么可以调用方法onSaveInstanceState(Bundle outState)方法。在其中可以通过outState.putString(key,value)来存储临时数据。如果被销毁了,那么调用onCreate方法时,可以获取临时数据:if(saveInstanceState != null) savedInstanceState.getString(key)获取临时数据。


(6)活动的启动模式?

standard: 默认模式。每当启动一个新的活动,都就会位于栈顶,每次启动都会创建该活动的一个新的实例。不论该活动是否已经有实例存在于栈中。如栈顶活动A创建新活动A的时候,仍然会创建新的A。

singleTop: 如果发现栈顶和将创建的新活动是一个,那么就不创建了。

singleTask: 只要返回栈中有一个活动A,那么就会一直用A。不会重新创建A。

singleInstance: 比如我们的程序中有一个活动允许其他程序调用,如果我们想实现其他程序和我们的程序可以共享这个活动的实例。每个应用程序都会有自己的返回栈,同一个活动在不同的返回栈中入栈的时候必然创建一个新的实例。使用这个模式就可以解决问题。在这种模式下会有一个大度的返回栈来管理这个活动。


(7)如何随时随地退出程序? 通过一个额外的List保存所有活动的引用,然后可以通过一次性的Finish所有的活动就可以了。可以通过activity.isFinishing来判断是否结束。

(8)启动活动的最佳方式?

  之前已经说过,可以通过Intent设置后谁启动谁,然后通过intent中加入数据,然后通过startActivity或者startActivityForResult来启动活动。






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值