我正在做一个应用程序,因为我想每3分钟调用一次Web服务,当设备没有超时时一切正常。但是当它进入Time out时,我认为计时器已经停止工作了。
解决此问题的替代方法是什么?无论如何我想要3分钟的间隙并且没有必要使用计时器,我可以使用替换Timer的任何东西。
答案 0 :(得分:1)
我正在做一个应用程序,因为我想每3分钟调用一次Web服务,当设备没有超时时一切正常。但是当它进入Time out时,我认为计时器已经停止工作了。
首先,这不是一个非常好的解决方案。只要看着时钟滴答,就不要一直在记忆中徘徊服务。
解决此问题的替代方法是什么
Use AlarmManager
,加上_WAKEUP
式警报和either WakefulBroadcastReceiver
或my WakefulIntentService
。
答案 1 :(得分:1)
使用RepeatAlarm:
private PendingIntent pendingIntent=null;
static Intent i;
public static AlarmManager manager ;
pendingIntent = PendingIntent.getService(con, 0,
intent, 0);
Calendar cal = Calendar.getInstance();
manager = (AlarmManager) con.getSystemService(Context.ALARM_SERVICE);
manager.setRepeating(AlarmManager.RTC_WAKEUP,
cal.getTimeInMillis(), (3*60*1000),
pendingIntent);
答案 2 :(得分:1)
在您的服务类
中 private static boolean isRunning = false;
private Timer timer = new Timer();
@Override
public void onCreate() {
super.onCreate();
Log.i("SyncService", "Service Started.");
int interval = 180000;// 3minutes
timer.scheduleAtFixedRate(new TimerTask() {
public void run() {
//your process
}
}, 0, (long) interval);
isRunning = true;
}
希望这会给你一些解决方案。