複数のタイマーを備えたアプリがあります。開始すると、Eclipse の Logcat でカウントダウンが表示されます。
Backボタンを押すとonStop()
、アプリで呼び出されますが、タイマーは logcat でカウントダウンを続けます (onTick()
カチカチ音をたて続けています)。
私が望むのは、onResume()
呼び出されたときに、まだカウントダウン中のタイマーを取得して続行したいということです。これは可能ですか?
カウントダウンを開始するボタンは次のとおりです。
//Button1 Timer
final CountDown button1 = new CountDown(420000,1000,bButton1);
bButton1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
button1.start();
long currentTime = System.currentTimeMillis();
//Set start time for calculating time elapsed if needed
saveTime("START_TIME_BUTTON1", currentTime);
}
});
//Button2 Timer
final CountDown button2 = new CountDown(360000,1000,bButton2);
bButton2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
button2.start();
long currentTime = System.currentTimeMillis();
//Set start time for calculating time elapsed if needed
saveTime("START_TIME", currentTime);
}
});
私onResume()
はこのように見えます:
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
//Reset the timers on appropriate buttons if there was something running
//If nothing was running or timer finished - have button in default state
//See if there was a button1 timer running - if not, it will be 0
SharedPreferences start = PreferenceManager.getDefaultSharedPreferences(this);
long startTime = start.getLong("START_TIME_BUTTON1", 0);
long timeElapsed = (System.currentTimeMillis()-startTime);
long timeRemaining = (420000 - timeElapsed);
if (timeRemaining == 0) {
} else if (timeRemaining > 0) {
final CountDown button1Timer = new CountDown(timeRemaining,1000,bButton1);
button1Timer.start();
long currentTime = System.currentTimeMillis();
saveTime("START_TIME", currentTime);
} else {
}
}
これは実際に機能します — はonResume()
最初のタイマーがあった場所で別のタイマーを開始し、テキストは適切な数を表示し、onTick()
メソッドでカウントダウンを続けます。しかし今、logcat は 1 つではなく 2 つのタイマーのカウントダウンを示しています!
最終的には、別のタイマーを開始したくありません。現在カウントダウン中の場所で開始した最初のタイマーを取得し、onTick()
適切に表示したいだけです。それを行う方法はありますか?サービスは私が探しているものでしょうか? バックグラウンドでカチカチ音をたて続けているので、それはすでにサービスですか?
これを行うためのベストプラクティスは何かについて少し混乱しています。