系统内存不足的时候就是LMK(low memory killer)出马的时候
每个进程都会有自己的adj值,这个值是根据一系列计算得知的,比如前台的应用就是adj为0,后台的很久不用的adj为9
LMK会依次杀死adj数值最大的进程释放空间看内存是否够用
被杀死的进程再次启动时候会重新oncreate,至于调用顺序,你看一下这个堆栈就知道了
android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:3815)
android.app.ActivityThread.access$2400(ActivityThread.java:125)
android.app.ActivityThread$H.handleMessage(ActivityThread.java:2037)
android.os.Handler.dispatchMessage(Handler.java:99)
android.os.Looper.loop(Looper.java:123)
android.app.ActivityThread.main(ActivityThread.java:4627)
at java.lang.reflect.Method.invokeNative(Native Method)
java.lang.reflect.Method.invoke(Method.java:521)
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
sundy.android.demo.activity.MainTestActivity.onRestoreInstanceState(MainTestActivity.java:76)
android.app.Activity.performRestoreInstanceState(Activity.java:815)
android.app.Instrumentation.callActivityOnRestoreInstanceState(Instrumentation.java:1096)
android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2641)