1

android生命周期

 2 years ago
source link: https://segmentfault.com/a/1190000041431509
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

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

Activity 生命周期

我们可以将android中的activity类比于angular中的组件
image.png
与组件的生命周期类似,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()方法之前被调用。

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

Bundle类型类似于容器,里面保存着键值对,我们往参数里面put键值,在onCreate()方法里可通过键获取值。

@Override
protected 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");
    }
}

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK