基本的な mm::ss timer を実装する必要があるアクティビティがあります。以下は、私が書いたコードです。ただし、問題は、エミュレーターの戻るボタンを押してアプリをもう一度クリックすると、値がはるかに速く変化することです。onCreate が再度呼び出されているようです。これを修正するにはどうすればよいですか? ブール変数を作成し、タスクが初めて呼び出されたときに true に設定しようとしました。値が false の場合にのみ startPeriodidUpdates() を呼び出しますが、onCreate は false の値で変数を再度作成します。
public class GraphicsActivity extends Activity {
static int seconds = 0;
static int minutes = 0;
public static String time_elapsed;
public static boolean clearView = true;
Handler myhandler = new Handler();
public static String min,sec;
public static boolean running = true;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
startPeriodicUpdates();
}
public void onResume(){
super.onResume();
}
public void onPause() {
super.onPause();
}
public void onStop(){
super.onStop();
}
public void startPeriodicUpdates()
{
periodicCall();
}
public void stopPeriodicUpdates(){
myhandler.removeCallbacksAndMessages(myhandler);
}
public void periodicCall()
{
seconds++;
if(seconds ==60)
{
seconds=0;
minutes++;
if(minutes==60)
{
seconds=0;
minutes=0;
}
}
// left-padding zeros to the minutes and seconds values
min = String.format("%02d",minutes);
sec = String.format("%02d",seconds);
time_elapsed = min + ":" + sec;
time_elapsed = min + ":" + sec + "";
myhandler.postDelayed(new Runnable(){
public void run(){
periodicCall();
}
},1000);
}