-
冷启动:
在启动应用时,系统中没有该应用的进程,这时系统会创建一个新的进程分配给该应用; -
热启动:
在启动应用时,系统中已有该应用的进程(例:按back键、home键,应用虽然会退出,但是该应用的进程还是保留在后台)
冷启动:
Application onCreate 在冷启动的时候执行一次
监听是用来监听所有 Activity 的生命周期回调 :可判断应用前后台/ 热启动
application:
public class ColdApplication extends Application {
/**
* 启动状态临时标识
*/
public static boolean tempCL;
/**
* 是否是冷启动
*/
public static boolean isColdLaunch;
@Override
public void onCreate() {
();
("ColdApplication", "------------------ColdApplication onCreate");
tempCL = true;
// 注册activity 生命周期回调检测
(new ColdActivityLifecycleCallbacks());
}
}
ColdActivityLifecycleCallbacks:
public class ColdActivityLifecycleCallbacks implements {
private int mFinalCount;
@Override
public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
}
@Override
public void onActivityStarted(Activity activity) {
mFinalCount++;
//如果mFinalCount ==1,说明是从后台到前台
if (mFinalCount == 1) {
("ColdApplication", "---------ColdApplication----ColdActivityLifecycleCallbacks");
// 进入前台 改为热启动
= false;
}
}
@Override
public void onActivityResumed(Activity activity) {
}
@Override
public void onActivityPaused(Activity activity) {
}
@Override
public void onActivityStopped(Activity activity) {
mFinalCount--;
//如果mFinalCount ==0,说明是前台到后台
if (mFinalCount == 0) {
("ColdApplication", "---------ColdApplication----ColdActivityLifecycleCallbacks onActivityStopped");
}
}
@Override
public void onActivitySaveInstanceState(Activity activity, Bundle outState) {
}
@Override
public void onActivityDestroyed(Activity activity) {
}
}
Mainactivity:
public class MainActivity extends AppCompatActivity {
private boolean isHomePageCreated = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
(savedInstanceState);
setContentView(.activity_main);
}
@Override
protected void onStart() {
();
if (!isHomePageCreated) {
= ;
= false;
isHomePageCreated = true;
("ColdApplication", "------------MainActivity----ColdApplication:onStart");
}
("MainActivity", "---是否是冷启动:" + ( ? "是冷启动" : "非冷启动"));
}
}
冷启动执行顺序:
2020-10-15 15:15:48.894 7870-7870/? E/ColdApplication: ------------------ColdApplication onCreate
2020-10-15 15:15:48.997 7870-7870/? E/ColdApplication: ---------ColdApplication----ColdActivityLifecycleCallbacks onActivityStarted
2020-10-15 15:15:48.997 7870-7870/? E/ColdApplication: ------------MainActivity----ColdApplication:onStart
home键退出: 应用退到后台
2020-10-15 15:15:52.048 7870-7870/ E/ColdApplication: ---------ColdApplication----ColdActivityLifecycleCallbacks onActivityStopped
再次点击应用图标即为 热启动:
2020-10-15 15:15:53.333 7870-7870/ E/ColdApplication: ---------ColdApplication----ColdActivityLifecycleCallbacks onActivityStarted