1

ワーカースレッドをインスタンス化してUIを毎秒更新するAndroidアプリを作成しています。

「ホーム」ボタンを押すと、スレッドはまだ実行されており、ホームからアプリを再起動すると、すべてが正常に機能します。UIは1秒ごとに更新されます。

しかし、「戻る」ボタンを押してからアプリを自宅から再起動すると、アプリはワーカースレッドから送信されたUIアップデートを取得しませんでした。

このスレッド参照を再度取得するにはどうすればよいですか?

クロノメーターのように動作するアプリを作成する必要があります。ユーザーがアプリを停止せずに終了した場合、作業を続行する必要があります。スレッドは良い選択ですか?AsyncTaskまたはServiceを使用してこれを解決できますか?

注:「戻る」ボタンを押すと、onDestroy()メソッドが実行されます。「ホーム」ボタンを押すと、onDestroy()が実行されません。

(私の悪い英語でごめんなさい)

4

1 に答える 1

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;
    }
于 2012-07-01T20:19:44.940 に答える