私はメモリゲームの小さなアプリを作成しました。そのアプリでは、ユーザーがゲームを終了するまでの時間を示すタイマーを作成しました。私の問題は、別のページ(ホームスクリーンのようなもの)に行ってゲームに戻った後にタイマーがフリーズすることです。時間は停止していたのと同じ時間に残ります。(私はそれを何とかonRestarte()メソッドしかし、何をすべきか分からない..)私はタイマーが停止されたのと同時に続けることを望む。 (ユーザーがゲームの途中でインコールをしてから続けたい場合など)。onRestart状態から復帰したときにアプリでタイマーを続ける方法
package com.example.kineret.memorygame;
public class Game4x4Activity extends AppCompatActivity implements View.OnClickListener{
TextView timerTextView;
long startTime = 0;
Handler timerHandler = new Handler();
Runnable timerRunnable = new Runnable() {
@Override
public void run() {
long millis = System.currentTimeMillis() - startTime;
int seconds = (int) (millis/1000);
int minutes = seconds/60;
seconds = seconds % 60;
timerTextView.setText(String.format("%d:%02d", minutes, seconds));
timerHandler.postDelayed(this, 500);
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_game4x4);
timerTextView = (TextView) findViewById(R.id.timerTextView4x4);
}
@Override
public void onPause() {
super.onPause();
timerHandler.removeCallbacks(timerRunnable);
}
@Override
public void onClick(View view) {
if(newGame) {
startTime = System.currentTimeMillis();
timerHandler.postDelayed(timerRunnable, 0);
newGame = false;
}
// rest of my code...
}
もっと少し説明できますか?あなたが欲しいもの ?ユーザーが別のページタイマーを停止したときに停止します。そのタイマーを停止するか、バックグラウンドで実行する必要がありますか? –
いいえ、ユーザーが別のページに移動したときにタイマーがバックグラウンドで続行されることは望ましくありません。私は、アプリがバックグラウンドにあるときに時間を止めて、以前と同じ場所から、つまりユーザーがアプリに戻ったときに続行したいと考えています。 –