代码之家  ›  专栏  ›  技术社区  ›  mtmurdock

Android:完成时窗口泄漏

  •  1
  • mtmurdock  · 技术社区  · 14 年前

    我读过其他窗户漏水的帖子,也试过那些建议,但都没有用。

    重要的是,这些任务必须在单独的活动中进行。

    到目前为止,应用程序已经成功地完成了它在大多数情况下应该做的事情,除了以下场景:如果用户在返回活动A之前在活动C中更改了方向,则应用程序将由于窗口泄漏而崩溃。

    • 在开始C之前,我正在取消活动B的onPause()中的ProgressDialog。
    • 我已经试过拒绝 主线程上的ProgressDialog 使用处理程序以及 分离螺纹。
    • 当用户不更改 C方向,无漏窗 发生。

    有什么想法吗?短暂性脑缺血发作

    3 回复  |  直到 14 年前
        1
  •  0
  •   Reuben Scratton    14 年前

    这通常发生在使用ProgressDialogs的地方。我试了一下ProgressDialog,发现要做的事情是从onPause()中关闭它,然后从onResume()中重新创建它。后台任务显然需要在“活动”对话框中生存下来,因此我使用onRetainNonConfigurationInstance()将任务实例从已销毁的活动传递给新的活动。

        2
  •  0
  •   mtmurdock    14 年前

    我完全改变了我处理一切的方式,解决了我的问题。我现在只有两个活动(A和B),在处理savedInstanceState时,根据需要在活动B中显示ProgessDialog,以便解决问题。

    尽管我已经在我的应用程序上修复了这个问题,但我仍然不知道为什么以前会发生这种情况,我想了解更多关于窗口泄漏的信息,以及为什么我会遇到问题。如果有人知道更多关于我的问题,请张贴,因为我相信还有其他人有同样的问题。

    谢谢

        3
  •  0
  •   SuperDave    13 年前