第一步:使用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);
}
}
网友评论