【问题标题】:android: stack trace for destroyandroid:销毁的堆栈跟踪
【发布时间】:2012-01-06 15:08:15
【问题描述】:

我的应用程序主要活动正在“被破坏”。我在销毁中有一条正在打印的日志消息。但是调用完成的路径没有被执行。

所以我想知道如何找出触发的 destroy() 被调用。它是从我的代码中完成的,还是任何其他系统错误。

@Override
protected void onDestroy() {
    try {
        super.onDestroy();

        Log.i("StartUpActivity", "OnDestroy");
        if (asyncTaskForSync != null && !asyncTaskForSync.isCancelled())
            asyncTaskForSync.cancel(true);
        if (DatabaseManager.getInstance() != null)
            DatabaseManager.getInstance().close();

        if (Utils.imageLoader != null)
            Utils.imageLoader.stopThread();
    } catch (Exception ex) {
        ex.printStackTrace();
    }

}

注意:答案: 我为我的启动活动保留了 android:noHistory="true" 。我希望此页面在其他活动的后按时不再可见。在破坏这项活动时,我已经像 db close 一样清理了所有东西。所以由于 nohistory = true,这个活动被自动销毁,导致所有资源关闭,从而导致我的应用程序出现异常。

我通过删除此标志并覆盖第二个活动的 onbackpressed 来更正。

感谢您的回答

【问题讨论】:

  • ...你在你的程序中哪里调用了finish()?仅当您按下手机的默认后退按钮或您编写完成的按钮或在完成某些事件后可能在您的 asyncTask 中时才会调用 onDestroy,从您的代码中可以看出
  • 谢谢,我的问题不同了。感谢您提供的线索和您的时间,我已经用答案编辑了我的问题

标签: android destroy activity-finish


【解决方案1】:

活动可能被破坏的原因有多种。例如。如果用户旋转设备,默认行为是销毁活动并创建一个新活动。

请参阅此处的“处理配置更改”http://developer.android.com/guide/topics/fundamentals/activities.html

【讨论】:

  • 非常感谢您的帮助和时间。我已经用我的案例和解决方案更新了我的问题。再次感谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-25
  • 2011-05-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-17
相关资源
最近更新 更多