Activity使用场景
1:全屏交互
2:浮动式窗口(theme设置为R.attr.windIsFloating)
3:多窗口模式或者嵌入到其他Activity中
Activity生命周期
Activity是Android四大组件之一(也有说是五大组件,此时包括Intent组件)
四大组件包括Activity,Service,Broadcast Receiver, Content Provider.
四种状态
状态 | 特征 |
---|---|
running/active | 此时Activity对用户可见并且可以操作 |
visible | 此时Activity仍然展现给用户但是已经失去焦点不可操作(原因是有非全屏的Activity或者透明的Activity对当前的Activity进行了遮挡) |
stopped/hidden | 此时Activity已被其他Activity完全遮挡,处于不可见状态,但是还保留着状态数据,如果此时内存告急则系统会杀死该Activity |
destoryed | 此时Activitity被进程被杀死 |
7个方法
Activity的生命周期中一共包括7个方法
他们分别是onCreate(Bundle)
,onStart()
,onResume()
,onPause()
,onStop()
,onDestory()
以及onRestart()
这七个方法 可以分为三组
组别 | 作用 |
---|---|
onCreate(Bundle) ,onDestory()
|
确定entire lifetime |
onStart() ,onStop()
|
确定visible lifetime |
onResume() ,onPause()
|
确定foreground lifetime |
其中onCreate()
和onStart()
方法之后的状态属于瞬时状态,就是说onCreate()
和onStart()
方法在调用之后会立刻调用之后的方法。
在调用了onStop(),onDestory()
,之后的Activity进程是可以被kill的。
在Activity中的定义为
public class Activity extends ApplicationContext {
/*entire lifetime*/
protected void onCreate(Bundle savedInstanceState);
/*entire lifetime*/
protected void onStart();
protected void onRestart();/*特殊用途*/
/*entire lifetime*/
protected void onResume();
/*entire lifetime*/
protected void onPause();
/*entire lifetime*/
protected void onStop();
/*entire lifetime*/
protected void onDestroy();
}
设备状态改变
设备状态改变包括设备朝向(Orientation)改变,语言设置改变等,都会导致当前的Activity被调用onDestory()
方法,导致当前的Activity被销毁,并且重新调用onCreate()
方法重新构建一个Activity实例。并且如果savedInstanceState实例不为空,则通过saveInstanceState实例来重构Activity。
if(savedInstanceState != null) {
mCurrentIndex = savedInstanceState.getInt(KEY_INDEX,mCurrentIndex);
}
通过重写onSaveInstanceState()来写入值
@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
super.onSaveInstanceState(savedInstanceState);
Log.i(TAG,"onSaveInstanceState");
savedInstanceState.putint(KEY_INDEX,mCurrentIndex);
}
系统杀死进程的优先级
1:forground Activity
这是最重要的一个进程,这个进程只会在最后被杀死。
2:visible Activity
为了保证foreground Activity的运行,在内存消耗的情况下会将它杀死。
3:background Activty
此时该Activity对于用户不可见,因此也就不那么重要,在内存告急时回优先杀死它。当用户返回该Activity时,它会调用onCreate()
方法来还原用户之前的操作。
4:empty process
此时该进程没有包含Activity或者其他应用组件,比如Service或者是BroadcastReceiver。在系统内存较低的时会很快被杀死。