私は Cowndown タイマーを作成しており、Observer インターフェイスを実装する countdowntimerController があります。Observable クラスを拡張し、Runnable インターフェースを実装する countdown という内部クラスがあります。ただし、ランナブルが終了してもコントローラーに通知されません。以下は私のコードです。どこが間違っているのか教えてください。PS Observer は Observable 内にあるため、countdown.addObserver(this) を使用しましたが、それは問題でしょうか?
public class CountdownTimerController extends ActivityController implements Observer {
private Handler handler = new Handler();
private void startTimer(int posi) {
/* some countdown timer codes */
Countdown countdown = new Countdown();
countdown.addObserver(this);
handler.post(countdown);
}
public void update(Observable arg0, Object arg1) {
// TODO Auto-generated method stub
Log.d("countdownController", "update");
}
private class Countdown extends Observable implements Runnable {
//private Handler handler = new Handler();
public void run() {
long millis = countdownTime - (System.currentTimeMillis() - startTime) + pausedTime;
if(millis <=0) {
onFinish();
return;
}
/* time calculation logic */
handler.postDelayed(this, 100);
}
public void onFinish(){
notifyObservers();
handler.removeCallbacks(this);
}
};
}