前言

android与angular有很多相似之处。正所谓学会了一门语言,其余语言都是相似的。

Activity 生命周期

咱们能够将android中的activity类比于angular中的组件

与组件的生命周期相似,activity中也有很多状态,在这些状态产生变更时会回调函数。Activity类提供六个外围回调:onCreate()、onStart()、onResume()、onPause()、onStop() 和 onDestroy()。而咱们发明的每一个本人的activity都会继承Activity类,咱们能够笼罩这些办法。

onCreate()

onCreate()办法会在activity创立时触发,用于进行初始化设置。咱们必须实现此办法,他会进行创立视图工作。他会传递一个Bundle参数,提供之前保留的活动状态。

onStart()

此时Activity曾经可见了,然而还没呈现在前台,咱们还看不到,无奈与Activity交互。如果Activity变得可见,零碎接下来会调用onResume()办法,如果Activity变得不可见,接下来会调用onStop()办法。

onStop()

此时Activity曾经不可见了,然而Activity对象还在内存中,没有被销毁。例如,当新启动的 Activity 笼罩整个屏幕时,可能会产生这种状况。如果流动再次可见,接下来会调用onRestart()办法。

onResume()

Activity在前台时,会调用此办法。利用会始终放弃这种状态,直到某些事件产生,让焦点远离利用。此类事件包含接到复电、用户导航到另一个Activity,或设施屏幕敞开。

onPause()

此办法示意Activity不再位于前台。这个办法实现之前,不会持续运行下一个流动,如果流动返回到前台,接下来会调用onResume(),如果流动变得不可见,接下来会调用onStop()。

onDestroy()

Activity将要完结(用户敞开Activity),或者配置变更(如旋转屏幕),零碎将要销毁流动。

保留Activity状态

比如说旋转屏幕时,将会触发Activity的onDestroy()办法并从新加载Activity,如果咱们想要保留Activity的状态,咱们须要用到onSaveInstanceState()办法,他会在onDestroy()办法之前被调用。

@Overridepublic void onSaveInstanceState(Bundle savedInstanceState) {    super.onSaveInstanceState(savedInstanceState);    savedInstanceState.putInt("seconds", seconds);    savedInstanceState.putBoolean("running", running);    savedInstanceState.putBoolean("wasRunning", wasRunning);}

Bundle类型相似于容器,外面保留着键值对,咱们往参数外面put键值,在onCreate()办法里可通过键获取值。

@Overrideprotected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_main);    if (savedInstanceState != null) {        seconds = savedInstanceState.getInt("seconds");        running = savedInstanceState.getBoolean("running");        wasRunning = savedInstanceState.getBoolean("wasRunning");    }}