长时间运行android后台服务

时间:2013-09-23 23:19:49

标签: java android

我有一个应用程序启动另一个应用程序。当我的应用程序进入后台时,我希望它在后台每1分钟执行一次方法。用户可能在其他应用程序中待了几个小时,我需要这段代码尽可能长时间执行。

在Android中执行此操作的最佳方式是什么?

Android文档说:

  

“如果需要保持线程长时间运行,强烈建议您使用java.util.concurrent pacakge提供的各种API,例如Executor,ThreadPoolExecutor和FutureTask”

这些实用程序有点过头了。我还需要有关后台计时器的帮助。

基本上我只想要这个:

(while my app is in background) do:
MyMethod()
Wait(1 minute)

2 个答案:

答案 0 :(得分:0)

您需要注册alarmmanager服务并每隔1分钟调用一次接收器。这是从Use alarmmanager to schedule events.

开始的一个很好的例子

答案 1 :(得分:0)

尝试使用ScheduledExecutorService,请参阅http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ScheduledExecutorService.html;

它有一个名为scheduleWithFixedDelay的方法(Runnable命令,                                         long initialDelay,                                         长时间延迟                                         TimeUnit单位)

你可以做到

Executors.newScheduledThreadPool(1).scheduleWithFixedDelay(new Runnable() {
public void run() {
wait(1);
}),0,1,TimeUnit.SECONDS);