题记:Activity给用户提供了一个用于交互的屏幕,实际上可以看成多个View的容器。
主要对以下三部分进行学习以及加入自己的理解:
1.activity基本概念以及如何创建
2.启动和关闭activity
3.activity生命周期
一、基本概念
1.Activity
相当于一个交互界面,里面承载了多个View用来和用户进行交互。当有新的activity创建时,当前的activity会放入栈中,使用返回键可以再次打开activity.那么它本身的创建、暂停、停止、销毁等,包含在整个生命周期中。
2. 创建
onCreate():在该方法中,必须调用setContentView()来指定所要展现的View,实际上也就是一个承载View的容器,展现与数据处理相分离。
二、启动和关闭
1.启动
通过onStartActivity():不接受返回值处理,只是单纯的调用其他的activity。
通过onStartActivityForResult():调用其他Activity后接受其返回状态,通过onActivityResult()方法接收,实际上也类似于一个回调函数。
2.关闭
通过finish()或者finishActivity()方法来关闭Activity,但是API说不推荐直接使用该方法。因为,Android系统本身会对Activity的生命周期做管理,强制关闭可能会引起不可预知的异常。当然,若是确认用户不再回到该Activity,可以调用上述方法来强制关闭。
三、生命周期
嘿嘿,借用下android官网关于生命周期的图,如下:
Activity生命周期图
1.整个生命周期。
从onCreate()开始,到onDestroy()结束。需要在onCreate中注册全局的资源(setContentView,设置按钮监听事件等),在onDestroy中释放资源(关闭线程、释放图片资源)。
2.可见的生命周期。
从onStart()开始,到onStop()结束。这个生命周期也即用户能够看见Activity并且与之交互的时期。这两个方法也可能被调用多次。
3.展示出来的生命周期。
从onResume()开始,到onPause()结束。这两个方法会频繁调用,因此不要在该方法中添加耗时的操作。
需要注意的方法:
onPause().是指当前活动的Activity非该Activity,但是又能看见该Activity时。
onStop().是指当前活动Activity非该Activity,并且该Activity也不可见。顺序上,总是先onPause然后再有onStop的。
onDestroy().是指在Activity销毁之前调用的方法,有可能在销毁方法调用过程中,也会被系统给杀掉。
有可能会被系统杀掉的状态:
onPause、onStop、onDestroy。
四、保存状态。
当activity在生命周期各阶段徘徊时,当前View下的状态值或者一些用户数据会丢失掉,因而需要保存activity的状态。
当activity被系统以为杀掉或者由于横竖屏的切换导致重新创建时,需要调用onSaveInstanceState()方法来保存状态。
当重新加载activity时,调用onRetoreInstanceState()方法来恢复之前保存的状态。
经过实验发现:onSaveInstanceState()方法一般在onPause和onStop之间调用,onRestoreInstanceState()方法在onStart和onResume方法之间调用。但是不是每次都会调用到。其实View都有实现了这两个回调函数,用来保存当前UI界面上面本身所对应的值。只要View的Id不为空,则会自动来保存当前View上的内容。我们需要做的只是保存自己所定义的成员变量。
- 何时唤醒资源、何时保存状态、何时保存数据;
- 注意可能会被系统杀掉的状态下保存数据;