Androidアクティビティで定期的にメソッドを実行したいのです。timerTaskで実行できることはわかっていますが、それを行うための最良の方法は何ですか?コードサンプルは役立ちます。
Handler
とそのpostDelayed
関数を使用する必要があります。あなたはここに例を見つけることができます: 時間遅延のあるタスクを繰り返しますか?
CountDownTimerでも実行できます
CountDownTimer countDownTimer;
public void usingCountDownTimer() {
countDownTimer = new CountDownTimer(Long.MAX_VALUE, 10000) {
// This is called after every 10 sec interval.
public void onTick(long millisUntilFinished) {
setUi("Using count down timer");
}
public void onFinish() {
start();
}
}.start();
}
およびonPause()
@Override
protected void onPause() {
super.onPause();
try {
countDownTimer.cancel();
} catch (Exception e) {
e.printStackTrace();
}
}
以下を使用できますAndroidクラス:
1.ハンドラ
Handler handler=new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
//your code
handler.postDelayed(this,20000);
}
},20000);
2.AlarmManager
AlarmManager alarmMgr = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
// Set the alarm to start at approximately 2:00 p.m.
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
Intent intent = new Intent(HomeActivity.this, Yourservice.class);
alarmIntent = PendingIntent.getService(HomeActivity.this, 0, intent, 0);
alarmMgr.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 600*1000, alarmIntent);