重複の可能性:
Android の通常のタスク (cronjob と同等)
私は現在、日常的にタスクを実行するために次のコードを試しています
public class BackupService extends Service {
private Timer timer = new Timer();
@Override
public IBinder onBind(Intent arg0) {
// TODO Auto-generated method stub
return null;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Toast.makeText(this, "Service Started", Toast.LENGTH_SHORT).show();
startBackup();
return START_STICKY;
}
private void startBackup() {
Date date = new Date(time);
System.out.println("Backup time:" +date);
timer.scheduleAtFixedRate(new BackupTimerTask(), date,
delayTime());
}
private long delayTime() {
long delay = 86400000;
System.out.println("delay time:" + delay);
return delay;
}
@Override
public void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
if (timer != null){
timer.cancel();
}
Toast.makeText(this, "Service Destroyed", Toast.LENGTH_SHORT).show();
}
private class BackupTimerTask extends TimerTask {
@Override
public void run() {
System.out.println("Backup started");
//starting backup here
}
}
}
このサービスを次のように呼んでいます
startService(new Intent(this, BackupService.class));
5分程度の短い間隔を入れればうまくいきますが、長い間隔ではうまくいきません。Android アプリで実行中のサービスに移動すると、サービスが実行中の状態であることがわかります。おそらくtimertaskクラスに何か問題があると思います。どうすれば問題を解決できますか??