Android Activity生命周期详解

2019-03-05  本文已影响0人  莫里亚蒂教授

-1- activity

-2-activity的四个状态

running-paused-stopped-killed

注:还有一种情况由于系统内存不足可能在Paused状态中直接被系统杀死达到killed状态。

-3-activity的生命周期

onCreate()->onStart()->onResume()->onRestart()->onPause()->onStop()->onDestory()


image4.png

e.g.:当AActivity切换BActivity的所执行的方法:
AActivity:onCreate()->onStart()->onResume()->onPouse()
BActivity:onCreate()->onStart()->onResume()
AActivity:onStop()->onDestory()

-4-Activity中onSaveInstanceState()和onRestoreInstanceState()

public class MainActivity extends Activity {  
    public static final int SECOND_ACTIVITY = 0;  
    private String temp;  
  
    @Override  
    public void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        // 从savedInstanceState中恢复数据, 如果没有数据需要恢复savedInstanceState为null  
        if (savedInstanceState != null) {  
            temp = savedInstanceState.getString("temp");  
            System.out.println("onCreate: temp = " + temp);  
        }  
    }  
  
    public void onResume() {  
        super.onResume();  
        temp = "xing";  
        System.out.println("onResume: temp = " + temp);  
        // 切换屏幕方向会导致activity的摧毁和重建  
        if (getRequestedOrientation() == ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED) {  
            setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);  
            System.out.println("屏幕切换");  
        }  
    }  
      
    // 将数据保存到outState对象中, 该对象会在重建activity时传递给onCreate方法  
    @Override  
    protected void onSaveInstanceState(Bundle outState) {  
        super.onSaveInstanceState(outState);  
        outState.putString("temp", temp);  
    }  
}

-5-activity的进程优先级。

前台进程>可见进程>service进程>后台进程>空进程

上一篇 下一篇

猜你喜欢

热点阅读