TextView に現在の値を表示する 1 秒ごとに 1 ずつ増加するカウンターがあります。
アクティビティが破棄されてから再作成されるまで、すべてが正常に機能します。そのような場合、カウンターは 0 にリセットされます。
カウンターのコードをカスタムService内に配置する必要があることを読んだので、バックグラウンドで実行されます。次に、Activity (TextView を含む) をBroadcastServicerと通信する必要があります。
BroadcastReceivers に関するいくつかのチュートリアルに従いましたが、まだこの問題を解決する方法がわかりません。
アクティビティ内の TextView を更新するために、BroadCastReceiver とサービスを通信する正しい方法を教えてください。
これまでのアクティビティのコードは次のとおりです。
public class CounterActivity extends Activity{
private long startTime = 0;
private Handler h = new Handler();
private TextView tvCounter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_task_list);
tvCounter = (TextView)findViewById(R.id.tvCounter);
Runnable run = new Runnable() {
@Override
public void run() {
long millis = System.currentTimeMillis() - startTime;
int seconds = (int) (millis / 1000);
int minutes = seconds / 60;
seconds = seconds % 60;
tvCounter.setText(String.format("%d:%02d", minutes, seconds));
h.postDelayed(this, 500);
}
};
startTime = System.currentTimeMillis();
h.postDelayed(run, 0);
}
}
前もって感謝します!