Android服务持续运行和轮询

Android服务持续运行和轮询,android,service,alarmmanager,polling,Android,Service,Alarmmanager,Polling,我必须实现一个用于测试的简单应用程序,在后台提供一个始终运行的服务,每隔几秒钟轮询一次服务器。 我知道GCM,但在我的情况下,它是不可能使用的,因为我在没有互联网连接的内部网中 因此,我需要一些关于哪些是最佳实践的解释:如何实现服务以每隔几秒钟做一件事?报警管理器?处理程序 谢谢 这里有一种重复做某事的方法: private ScheduledExecutorService exec; private void startExec() { shutDownExec(); exe

我必须实现一个用于测试的简单应用程序,在后台提供一个始终运行的服务,每隔几秒钟轮询一次服务器。 我知道GCM,但在我的情况下,它是不可能使用的,因为我在没有互联网连接的内部网中

因此,我需要一些关于哪些是最佳实践的解释:如何实现服务以每隔几秒钟做一件事?报警管理器?处理程序


谢谢

这里有一种重复做某事的方法:

private ScheduledExecutorService exec;

private void startExec() {
    shutDownExec();
    exec = Executors.newSingleThreadScheduledExecutor();
    exec.scheduleWithFixedDelay(new Runnable() {

        @Override
        public void run() {
            // starts immediately and is run once every minute
        }
    }, 0, 1, TimeUnit.MINUTES);
}

private void shutDownExec() {
    if (exec != null && !exec.isTerminated()) {
        exec.shutdown();
    }
}

当然,可以将其包装在服务中,使其在服务生命周期内运行。

如果存在活动的活套线程,可以将计时器请求发送到该线程,请使用处理程序。如果需要在应用程序未运行时唤醒应用程序,请使用报警管理器。解决方案与在线程中调用sleep方法之间的区别是什么?它与运行任务所需的时间无关:否则,我想不会有太多。除此之外,我发现它更容易维护和阅读。