我正在编写一个安卓应用程序,它实例化一个工作线程以每秒更新 UI。
当我按下"主页"按钮时,线程仍在运行,当我从家里重新启动应用程序时,一切正常:UI 仍然每秒更新一次。
但是,当我按下"后退"按钮,然后从家里重新启动应用程序时,该应用程序没有从工作线程发送 UI 更新。
我该怎么做才能再次获取此线程引用?
我需要做一个像计时器一样工作的应用程序。如果用户离开应用而不停止它,则工作必须继续。线程是一个不错的选择吗?我可以使用AsyncTask或服务来解决此问题吗?
注意:按下"后退"按钮,将执行onDestroy()方法。当我按下"主页"按钮时,onDestroy() 没有执行。
(对不起,我的英语不好)
您应该需要一个布尔变量来处理来自后台线程的 UI 更新。 通过此变量,您可以在应用程序运行时控制线程,并通过按返回和主页键暂停。 将您的代码更改为:
boolean threadstatus=false;
@Override
public void run(){
try
{
while(threadstatus)
{
///your code...
}
}
protected void onResume() {
super.onResume();
threadstatus=true;
}
@Override
protected void onPause() {
super.onPause();
threadstatus=false;
}
@Override
protected void onStop() {
super.onStop();
threadstatus=false;
}
@Override
protected void onDestroy() {
super.onDestroy();
threadstatus=false;
}