I checked up that Application(not Activity) has module of handling "stopped / resumed".
There was no explicit modules that are called from the frameworks.
So, What is Application#onTerminate()? Where is called in frameworks?
Are described in the Android Developers.
http://developer.android.com/reference/android/app/Application.html#onTerminate()
This method is for use in emulated process environments. It will never be called on a production Android device, where processes are removed by simply killing them; no user code (including this callback) is executed when doing so.
This Module will be present for what?
I do "grep" in Android frameworks, it is called from ActivityThread.java.
case EXIT_APPLICATION: if (mInitialApplication != null) { mInitialApplication.onTerminate(); } Looper.myLooper().quit(); break;
When ActivityThread#scheduleExit() send message, this process is called.
2 module in ActivityManagerService.java is called ActivityThread#scheduleExit()。
private final boolean attachApplicationLocked(IApplicationThread thread, int pid) final void trimApplications()
Cord in module.
if (app.pid > 0 && app.pid != MY_PID) { EventLog.writeEvent(EventLogTags.AM_KILL, app.pid, app.processName, app.setAdj, "empty"); Process.killProcessQuiet(app.pid); } else { try { app.thread.scheduleExit(); } catch (Exception e) { // Ignore exceptions. } }If the following case to call ActivityThread#scheduleExit().
- PID is under "0"
- PID is MY_PID(= System Process)
When Application is same "System Process", called ActivityThread#scheduleExit().
So, It is not application of "same System Process"...
No comments:
Post a Comment