2012-08-15 101 views
1

我正在模拟器中启动我的应用程序,并在开始活动中看到对onDestroy()的调用。 Android文档似乎暗示onDestroy()仅在应用程序停止时才被调用。有没有其他可以调用的情况?它会导致我的应用程序出现问题,因为我正在关闭onDestroy()方法中的执行程序(该程序是在类加载时创建的)。首先尝试使用执行程序然后抛出RejectedExecutionException。我猜这是因为我关闭了它。onDestroy在模拟器中启动应用程序时调用

智慧感激地收到。

+0

您是否在任何地方调用Activity.finish()? – techiServices 2012-08-15 20:46:40

+0

未调用Activity.finish(),no。打破onDestroy()表明该活动正在重新启动。我认为这可能是因为它在开机后从横向变为纵向。这可能解释了它。我需要将执行程序创建移动到onCreate()我认为。是的,就是这样。我需要以预定的方向启动应用程序以避免此问题,并且将执行程序创建移至onCreate以保证安全。感谢您的意见。 finish()做什么? – 2012-08-15 21:00:21

+0

'finish()'导致'onDestroy()'被调用。当你旋转你的设备Android将杀死你的应用程序并重新创建它。因此,您需要处理这种情况以最适合您的需求。阅读API文档中的活动生命周期。 http://developer.android.com/training/basics/activity-lifecycle/index.html – techiServices 2012-08-15 21:54:37

回答

0

onDestroy()只在应用程序关闭时被调用。以下是一些您可以尝试的操作:

  1. 发生什么情况,您将删除代码以完全关闭执行程序?
  2. 如果您将代码移动到onStop()会发生什么?
  3. 您确定onStop()没有在您的设备上已运行的应用程序的先前实例上被调用。 (即安装应用程序,进行更改,再次安装,第一个必须停止。)
+0

该问题是由于应用程序启动后方向更改而引发的。方向更改重新启动应用程序,通过onDestroy()然后onCreate()强制执行。 – 2012-08-15 23:55:06