前言
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"); }}