我正在编写一个Android应用程序,它实例化一个工作线程,每秒更新一次UI。
当我按下“home”按钮时,线程仍在运行,当我从家里重启应用程序时,一切正常:UI仍然每秒都在更新。
但是,当我按下“后退”按钮,然后从家重启应用程序时,应用程序没有从工作线程发送UI更新。
我该怎样做才能再次获得此线程参考?
我需要做一个像计时器一样工作的应用程序。如果用户在不停止的情况下离开应用程序,则必须继续工作。线程是一个不错的选择吗?我可以使用AsyncTask或Service来解决这个问题吗?
注意:按“后退”按钮,执行onDestroy()方法。当我按下“home”按钮时,onDestroy()不会被执行。
(抱歉我的英语不好)
答案 0 :(得分:0)
您应该需要一个布尔变量来处理后台线程的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;
}