キャンセルするとタイマーは停止しません! アプリ全体をシャットダウンするとタイマーが停止するだけです!timer.cancel()によってタイマーがキャンセルされない
なぜタイマーがキャンセルされたのかわかりません。私がタイマーをキャンセルしようとするたびに印刷してみると、私はhundretsのラインを得るが、タイマーは止まらない!
私のクラス:
public class PlayActivity extends AppCompatActivity
implements View.OnClickListener, SeekBar.OnSeekBarChangeListener, MediaplayerEvent {
//region Activity
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Initialize_Layout();
Initialize_Objects();
}
@Override
protected void onResume() {
super.onResume();
MusicService.setMediaPlayerEvent(this);
txvSongtitle.setText(serviceInterface.MP_getActualSong().getTitle());
Start_Timer();
}
@Override
protected void onPause() {
timer.cancel();
MusicService.clearMediaPlayerEvent();
super.onPause();
}
@Override
public boolean onSupportNavigateUp() {
finish();
return super.onSupportNavigateUp();
}
//endregion
//region Methods
private void Start_Timer() {
timer = new Timer();
timer.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
if (serviceInterface.MP_isPlaying()) {
runOnUiThread(new Runnable() {
@Override
public void run() {
seekBar.setMax(serviceInterface.MP_getDuration());
seekBar.setProgress(serviceInterface.MP_getCurrentPosition());
}
});
}
else {
runOnUiThread(new Runnable() {
@Override
public void run() {
timer.cancel();
}
});
}
}
}, 0, 200);
}
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
if (fromUser) {
serviceInterface.MP_seekTo(progress);
Start_Timer();
}
}
//endregion
}
私はあなたが私を助けることができると思います! ありがとう!
okありがとうございますが、なぜタイマーでは機能しませんか? スレッドを使用すべき理由を知っています: –
これは、他の答えが言ったように - 問題を引き起こしていたプログレスバーを更新するたびに新しいタイマーを作成していました。喜んでそれが固定されています:) – privatestaticint
ああええ、thats素晴らしい:) –