《第一行代码》(二)
活动的生命周期:
启动时函数调用的顺序:
启动活动时,调用oncreate(),onstart(),onResume()函数。当另一个正常活动启动时,把主活动遮挡住,会调用onpause(),onstop()函数,
按下返回键后,会调用onrestart(),onstart(),onresume()函数。
当启动对话框活动时,只会调用onpause(),返回时只会调用onresume()函数。
在主活动返回时,会调用onpause,onstop,ondestroy函数。
定义对话框活动时,AndroidManifest.xml 的<activity>标签中android:theme="@android:style/Theme.Dialog"来将活动定义为对话框。
在活动回收前保留信息:
打个比方,MainActivity 中有一个文本输入框,现在你输入了一段文字,然后
启动 NormalActivity,这时 MainActivity 由于系统内存不足被回收掉,过了一会你又点击了
Back 键回到 MainActivity,你会发现刚刚输入的文字全部都没了,因为 MainActivity 被重新
创建了。
Activity 中还提供了一个 onSaveInstanceState()回调方法,这
个方法会保证一定在活动被回收之前调用,因此我们可以通过这个方法来解决活动被回收时临时数据得不到保存的问题。
中间介绍了活动的启动模式。
对于standard模式,系统不会在乎这个活动是否已经在返回栈中,每次启动都会创建该活动的一个实例。
singleTop:若栈顶是该活动,则不会再创建新的活动实例。
singleTask:系统中如果存在该活动,则直接使用,不再创建。
singleInstance:启用一个新的返回栈来管理这个活动。
最后介绍了几种在活动中的最佳实践技巧。
首先是知晓当前是在哪一个活动:这时通过定义一个基类,在基类中打印出活动的名称。
然后是如何随时随地退出程序:通过一个专门的集合类对所有的活动进行管理。
最后介绍了启动活动的最佳方法:
我们在 SecondActivity 中添加了一个 actionStart()方法,在这个方法中完成了 Intent 的构
建,另外所有 SecondActivity 中需要的数据都是通过 actionStart()方法的参数传递过来的,然
后把它们存储到 Intent 中,最后调用 startActivity()方法启动 SecondActivity。