【发布时间】:2015-10-02 16:15:44
【问题描述】:
我有一个涉及线程和从方向变化中恢复的问题。我已经看到了很多涵盖线程或方向更改的出色答案,但涵盖两者的却很少。这是涵盖我的问题的一般场景:
- 应用启动,包含一个活动:一个 TextView 填充了变量“count”,最初为 0,一个 START 和一个 STOP 按钮。
- 开始按钮启动线程(使用线程),循环递增 数字并更新 TextView。
- 停止按钮设置布尔标志,因此线程退出。
- 所有变量都是全局变量和易失变量,用于控制线程的对象变量信号。
现在,处理方向变化的最佳方法是什么。我假设我:
- 在onPause()中,我调用signal.wait()来暂停线程
- 在 onSaveInstanceState() 上保存变量“counter”
- 在 onResume() 中,我从 onRestoreInstanceState() 得到“计数器”
由于 onCreate() 将为“信号”创建一个新对象,我如何重新建立到当前正在等待() 的线程的链接,以便我可以调用 notify() 并恢复它?
我已尽我所能解释了这一点,我会尽力提供所要求的任何其他信息。
【问题讨论】:
-
为什么不直接启动一个新线程并将计数器变量作为参数提供给它,以便它知道从哪里开始呢?您正确保存了 Activity 的状态,这样当一切重新开始时,您可以从中断的地方继续。所以只需重新启动线程,并告诉它计数器停止的位置(您在 savedInstanceState 中有)。
-
谢谢@drschultz,这会奏效。我想知道最好的做法是什么。我知道当应用程序进入后台时,wait() 和 notify() 非常适合管理线程,我只是想知道我是否也可以使用它们来改变方向。
-
在下面添加了答案。如果您认为它解决了您的问题,请接受它。谢谢!
标签: java android multithreading