java Android:在方向更改后恢复暂停的线程
我有一个问题涉及线程和从方向改变中恢复。我已经看到了很多涵盖线程或方向变化的伟大答案,但很少有人同时涵盖这两个方面。下面是一个涵盖我的问题的一般场景:
- 应用程序启动时,包含一个活动:一个文本视图填充变量“count”,最初为0,一个开始和一个停止按钮李>
- 开始按钮启动线程(使用线程),循环递增 输入号码并更新文本视图李>
- 停止按钮设置布尔标志,使线程退出李>
- 所有变量都是全局变量和可变变量,对象变量信号用于控制线程李>
现在,处理方向改变的最佳方式是什么。我假设我:
- 在onPause()中,我调用信号。wait()暂停线程
- 在onSaveInstanceState()上保存变量“counter”
- 在onResume()中,我从onRestoreInstanceState()获取“计数器”
由于onCreate()将为“信号”创建一个新对象,我如何重新建立一个指向当前正在等待()的线程的链接,以便调用notify()并恢复它
我尽我所能解释了这一点,我会尽力提供所需的任何其他信息
# 1 楼答案
活动的生命周期被设计为可以根据系统需求或用户交互来销毁和重新创建,所以一般来说,当这些生命周期发生变化时,任何应用内操作也应该销毁和重新创建。例外情况是,除了活动(如服务)之外,在后台运行的长时间运行的进程
因此,为了回答您的问题,与其尝试暂停并恢复线程,不如在活动重新启动时简单地重新启动线程,并向线程提供计数器变量,作为计数停止的指示器。您已经在savedInstanceState中保存了这个变量,因此只需在活动开始时获取它,然后将其传递到(新)线程中继续计数即可