美文网首页
Activity 生命周期函数执行顺序

Activity 生命周期函数执行顺序

作者: 微笑中的你 | 来源:发表于2019-11-11 10:13 被阅读0次

第一步:使用AndroidStudio 创建一个空项目

覆盖生命周期函数 7个

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Log.d("life","--------------- 1 : onCreate-------------------");
        setContentView(R.layout.activity_main);
    }
    @Override
    protected void onStart() {
        Log.d("life","--------------- 2 : onStart-------------------");
        super.onStart();
    }
    @Override
    protected void onResume() {
        Log.d("life","--------------- 3 : onResume-------------------");
        super.onResume();
    }
    @Override
    protected void onPause() {
        Log.d("life","--------------- 4 : onPause-------------------");
        super.onPause();
    }
    @Override
    protected void onStop() {
        Log.d("life","--------------- 5 : onStop-------------------");
        super.onStop();
    }
    @Override
    protected void onDestroy() {
        Log.d("life","--------------- 6 : onDestroy-------------------");
        super.onDestroy();
    }
    @Override
    protected void onRestart() {
        Log.d("life","--------------- 7 : onRestart-------------------");
        super.onRestart();
    }

1 debug 启动调试App

  • 启动流程:onCreate() -> onStart() -> onResume() -> 显示主界面
  • 退出程序:单击Home键 时,onPause() -> onStop() -> onDestroy() 回到手机桌面,
  • 点击app图标:然后又执行了启动流程

2 debug 启动调试App

  • 启动流程:onCreate() -> onStart() -> onResume() -> 显示主界面
  • 退到后台:按住Home键 时,onPause() -> onStop() 回到手机桌面,
  • 点击app图标:onRestart() ->onStart() -> onResume()

第二步:然后添加一个Activity:LoginActivity

当点击“Hello World!”后,跳转到登录页面,登录页面我只放一个 “返回”按钮。

1 debug 启动调试App

  • 启动流程:onCreate() -> onStart() -> onResume() -> 显示主界面
  • 单击“Hello World!”后:MainActivity.onPause() -> LoginActivity.onCreate() -> LoginActivity.onStart() -> LoginActivity.onResume() -> 看到登录界面 -> MainActivity.onStop()
  • 点击返回按钮:LoginActivity.onPause() -> MainActiviy.onRestart() -> MainActivity.onStart() -> MainActivity.onResume() -> LoginActivity.onStop() -> 显示主界面

2 debug 启动调试App

  • 启动流程:onCreate() -> onStart() -> onResume() ->显示界面
  • 单击“Hello World!”:MainActivity.onPause() -> LoginActivity.onCreate() -> LoginActivity.onStart() -> LoginActivity.onResume() -> 看到登录界面 -> MainActivity.onStop()
  • 按住Home键:LoginActivity.onPause() -> LoginActivity.onStop() -> 回到手机桌面
  • 单击App:LoginActivity.onRestart() -> LoginActivity.onStart() -> LoginActivity.onResume()

实现接口Application.ActivityLifecycleCallbacks 来管理所有的Activity生命周期方法

    @Override
    public void onActivityCreated(@NonNull Activity activity, @Nullable Bundle savedInstanceState) {

    }

    @Override
    public void onActivityStarted(@NonNull Activity activity) {
        //获取是否从后台启动
        SharedPreferences sharedPreferences = getSharedPreferences(LXF_KEY_APPSTATUS, MODE_PRIVATE);
        boolean fromBackground = sharedPreferences.getBoolean(LXF_KEY_FROMBACKGROUND, false);
        if (fromBackground){
            //如果是从后台打开app,那么就开始定位
            Log.d("life", "---------");
            setAppStatus(false);
        } else {

        }

    }

    @Override
    public void onActivityResumed(@NonNull Activity activity) {

    }

    @Override
    public void onActivityPaused(@NonNull Activity activity) {

    }

    @Override
    public void onActivityStopped(@NonNull Activity activity) {

    }

    @Override
    public void onActivitySaveInstanceState(@NonNull Activity activity, @NonNull Bundle outState) {

    }

    @Override
    public void onActivityDestroyed(@NonNull Activity activity) {

    }

结合onTrimMemory() 方法来进行判断后台进入到前台

    @Override
    public void onTrimMemory(int level) {
        super.onTrimMemory(level);
        if (TRIM_MEMORY_UI_HIDDEN == level){
            Log.d("life","--------------- 0 : onTrimMemory-------------------");
            setAppStatus(true);
        }
    }

相关文章

网友评论

      本文标题:Activity 生命周期函数执行顺序

      本文链接:https://www.haomeiwen.com/subject/xesjmctx.html