当退出应用程序时,我正在尝试维护日志。我用过这段代码:
public void onDestroy() {
super.onDestroy();
Log.d("D", "Destroyed");
}
但这仅在我按下Back
按钮时才有效。当我按下Home
按钮时,应用程序Pauses
,如果我从任务管理器关闭此应用程序,则onDestroy
不会调用该函数。如何处理?
任何想法 ?
当退出应用程序时,我正在尝试维护日志。我用过这段代码:
public void onDestroy() {
super.onDestroy();
Log.d("D", "Destroyed");
}
但这仅在我按下Back
按钮时才有效。当我按下Home
按钮时,应用程序Pauses
,如果我从任务管理器关闭此应用程序,则onDestroy
不会调用该函数。如何处理?
任何想法 ?
您无法处理从任务管理器关闭应用程序。在这种情况下,您正在杀死应用程序并且onDestroy
没有被调用。你应该把所有东西都清理干净onPause
在某些情况下,您的 Activity 由于正常的应用程序行为而被破坏,例如当用户按下后退按钮或您的 Activity 通过调用 finish() 发出自己的破坏信号时。如果您的活动当前已停止并且长时间未使用,或者前台活动需要更多资源,系统也可能会破坏您的活动,因此系统必须关闭后台进程以恢复内存。
当您通过按主页按钮在应用程序之间切换时,Android 会暂停活动并在您返回活动时恢复活动。
在大多数情况下,操作系统决定何时退出应用程序,因此您在活动被破坏时记录是没有意义的。我建议覆盖onPause()
oronStop()
方法
你可以用方法做你的事情onPause()
。
在您的情况下:
如果End Process
从任务管理器的进程列表中使用,则应用程序中不会调用任何内容,应用程序将被终止。
如果End Task
从应用程序列表中使用,则将WM_CLOSE
其发送到窗口,这反过来又允许应用程序进行清理。
onDestroy()
在活动完成其生命周期时调用。它也在活动的生命周期中被调用一次。
操作系统决定事情何时“消失”。这onDestroy
是为了让您的应用程序有最后的机会在活动被破坏之前清理东西。