【问题标题】:Android Activity will close Looper & Handler?Android Activity 会关闭 Looper & Handler 吗?
【发布时间】:2014-09-02 20:41:58
【问题描述】:

对不起,reading this. 之后我有点困惑 如果说,我有一个 Activity 并且在里面, 我试图创建一个内部类实现具有循环器和处理程序的线程。

我的问题是; 如果我完成()我的活动。这是否关闭了我上次创建的任何 Looper / Handler?

尽管 Activity 已经关闭,但恐怕线程仍在后台运行 -> 已结束。

【问题讨论】:

  • 尝试将 Timer 与 scheduleAtFixedRate 一起使用。

标签: java android multithreading loops thread-safety


【解决方案1】:

完成后,你不必关心附加到主线程的Handlers,因为它的Looper(和线程本身)是由系统管理的,它会在必要时退出。

但是,如果 Handler 连接到不受系统管理的单独 Looper(例如,您启动了 Looper 的线程),它将会在那里,以防您没有停止相关线程(具有活套)。这对于所有线程来说都是如此,线程具有 Looper 的事实并不会改变这种情况。

所以这里重要的想法是停止您手动启动的每个线程。

作为补充:

  • 您始终可以在 Eclipse 中检查正在运行的线程。只需附上 调试器并转到调试视图。所有主题都将在此处列出。
  • 看看HandlerThread。

【讨论】:

  • "finish() 调用后,所有附加到“主 UI 线程”的处理程序都将停止(因为主线程的 Lopper 退出)。这显然不正确,为什么finish()会强制Looper.quit()?
猜你喜欢
  • 2023-03-30
  • 2011-07-16
  • 1970-01-01
  • 2012-10-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-18
相关资源
最近更新 更多