Activity生命周期以及使用场景2019-07-18

Activity使用场景

1:全屏交互
2:浮动式窗口(theme设置为R.attr.windIsFloating)
3:多窗口模式或者嵌入到其他Activity中

Activity生命周期

Activity是Android四大组件之一(也有说是五大组件,此时包括Intent组件)
四大组件包括Activity,Service,Broadcast Receiver, Content Provider.

activity_lifecycle.png

四种状态

状态 特征
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。在系统内存较低的时会很快被杀死。

你可能感兴趣的:(Activity生命周期以及使用场景2019-07-18)