【发布时间】:2015-04-06 16:15:20
【问题描述】:
当应用程序启动和完全退出(被销毁)时,我需要运行一些代码。我正在使用 onCreate 和 onDestroy 但不幸的是屏幕方向更改会破坏并重新创建活动。
【问题讨论】:
-
在您的清单中指定您处理配置更改(潜在的列表随着每个 API 版本的发布而变长)。请注意,虽然不能保证该进程将存活足够长的时间以调用 onDestroy()。
当应用程序启动和完全退出(被销毁)时,我需要运行一些代码。我正在使用 onCreate 和 onDestroy 但不幸的是屏幕方向更改会破坏并重新创建活动。
【问题讨论】:
看看Android应用http://developer.android.com/reference/android/app/Application.html
您可以知道应用程序何时创建(Application.onCreated)
但是您不知道应用程序何时销毁。 Application.onTerminate() 仅用于模拟进程环境。
【讨论】:
每次应用启动时,您的 启动器活动 的onCreate 方法都会被调用。因此,您必须将所需的代码放入 Launcher 活动的 onCreate 方法中。
要检测您的应用程序是否被破坏,您可以从 Override unimplemented method 菜单中使用 override onDestroy 方法(就像添加 onCreate 一样)。并把你想在应用销毁时执行的代码放在这个方法里面。
【讨论】:
如果您的代码可以在后台发生(如果您需要在 UI 线程上发生某些事情,则无法工作),您可以试试这个:
让您的活动持有对您扩展的线程的引用,我们称之为 MyThread 运算符。
在 onCreate 中,这样做:
if(operator==null){
operator = new MyThread();
operator.start();
}
然后,在 MyThread 中,将您的代码放入 run() 和 interrupt() 两个方法中。
当您的活动通过方向更改重新创建时,它将保持操作员对您的后台线程的引用。当您真正关闭您的应用程序时,android 将在几秒钟后终止您的操作员并因此执行您的代码。
如果我错了,请高人指正,我最近没睡太久,线程总是一个复杂的话题......
【讨论】: