2016-03-30 8 views
0

現時点ではUIスレッドで実行中のCountdownTimerがあり、onTickに従ってインターフェイスを更新しています。UIスレッドを更新するワーカースレッドのCountdownTimer

私はバックグラウンドで(ホームボタンを押して)他のCPUの不具合のあるアプリケーションを起動するとアプリがスタックすることがあることがわかったので、いつも期待通りに機能していません。私は最善の解決策はバックグラウンドスレッドにCountDownTimerを移動することだと思います。私が間違っている?

CountDownTimerの目盛りに従ってUIスレッドを更新するにはどうすればよいですか? AsyncTaskの使用はおそらく短期間の作業には推奨されるので良い考えではありませんが、IntentServiceとLocalBroadcastManagerの推奨事項がいくつか見つかりました。

これを達成するための最良の解決策は何ですか?例は素晴らしいでしょう。ありがとう!

答えて

0

1)今後の定期的なタスクにAlarmManagerとPendingインテントを使用してください。 Check this

2)UIを更新するRunnableをポストするには、Handlerを使用します。

new Handler(Looper.getMainLooper()).post(new Runnable() { 
       @Override 
       public void run() { 
        Toast.makeText(context,"This is run on UI thread",Toast.LENTH_SHORT).show(); 
       } 
      }); 
関連する問題