Android 服务中的计时器不工作

Android 服务中的计时器不工作,android,service,timer,Android,Service,Timer,我正在做一个应用程序,我想每3分钟调用一次web服务,当设备未超时时,一切正常。但当它超时时,我想计时器已经停止工作了 解决这个问题的替代方法是什么。我想3分钟的差距无论如何,它没有必要使用定时器,我可以使用任何与定时器的替代 我正在做一个应用程序,我想每3分钟调用一次web服务,当设备未超时时,一切正常。但当它超时时,我想计时器已经停止工作了 首先,这不是一个很好的解决方案。不要让服务一直挂在内存上,只是看着时钟滴答作响 解决这个问题的替代方法是什么 ,与\u唤醒式警报和/或结合 我正在做一个

我正在做一个应用程序,我想每3分钟调用一次web服务,当设备未超时时,一切正常。但当它超时时,我想计时器已经停止工作了

解决这个问题的替代方法是什么。我想3分钟的差距无论如何,它没有必要使用定时器,我可以使用任何与定时器的替代

我正在做一个应用程序,我想每3分钟调用一次web服务,当设备未超时时,一切正常。但当它超时时,我想计时器已经停止工作了

首先,这不是一个很好的解决方案。不要让服务一直挂在内存上,只是看着时钟滴答作响

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

,与
\u唤醒
式警报和/或结合

我正在做一个应用程序,我想每3分钟调用一次web服务,当设备未超时时,一切正常。但当它超时时,我想计时器已经停止工作了

首先,这不是一个很好的解决方案。不要让服务一直挂在内存上,只是看着时钟滴答作响

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

,再加上一个
\u唤醒式报警和或。

使用重复报警:

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);
使用重复报警:

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);
在你的服务课上

  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;
}
希望这能给你一些解决办法。

在你的服务课上

  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;
}

希望这能为您提供一些解决方案。

不要使用
AlarmManager
\u WAKEUP
带有服务的报警
PendingEvent
。关于使用
\u WAKEUP
唤醒的唯一保证是我们使用广播
挂起内容
——在这种情况下,
AlarmManager
保证我们将保持足够长的唤醒时间,以便
onReceive()
完成。不要使用
AlarmManager
\u WAKEUP
带有服务的报警
pendingEvent
。关于
\u WAKEUP
唤醒的唯一保证是我们使用广播
pendingent
——在这种情况下,
AlarmManager
保证我们将保持足够长的唤醒时间,以便
onReceive()
完成。