0

我正在做一个应用程序,我想每 3 分钟调用一次 Web 服务,当设备没有超时时一切正常。但是当它进入超时时,我认为计时器已经停止工作。

解决此问题的替代方法是什么。无论如何,我想要 3 分钟的间隔,并且没有必要使用计时器,我可以使用任何东西来替换计时器。

4

3 回答 3

1

我正在做一个应用程序,我想每 3 分钟调用一次 Web 服务,当设备没有超时时一切正常。但是当它进入超时时,我认为计时器已经停止工作。

这首先不是一个很好的解决方案。不要让服务一直在记忆中徘徊,只是看着时钟滴答作响。

解决此问题的替代方法是什么

使用AlarmManager,再加上一个_WAKEUP风格的警报和要么WakefulBroadcastReceiver我的WakefulIntentService

于 2013-08-05T13:11:36.900 回答
1

使用重复警报:

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);
于 2013-08-05T13:12:14.083 回答
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;
}

希望这会给你一些解决方案。

于 2013-08-05T13:17:22.300 回答