重启android应用程序时获取对象状态

时间:2012-07-01 20:04:54

标签: android multithreading service android-asynctask

我正在编写一个Android应用程序,它实例化一个工作线程,每秒更新一次UI。

当我按下“home”按钮时,线程仍在运行,当我从家里重启应用程序时,一切正常:UI仍然每秒都在更新。

但是,当我按下“后退”按钮,然后从家重启应用程序时,应用程序没有从工作线程发送UI更新。

我该怎样做才能再次获得此线程参考?

我需要做一个像计时器一样工作的应用程序。如果用户在不停止的情况下离开应用程序,则必须继续工作。线程是一个不错的选择吗?我可以使用AsyncTask或Service来解决这个问题吗?

注意:按“后退”按钮,执行onDestroy()方法。当我按下“home”按钮时,onDestroy()不会被执行。

(抱歉我的英语不好)

1 个答案:

答案 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;
    }