如何在android中定期运行代码?

时间:2014-02-09 20:30:18

标签: android android-asynctask

在我的android项目中,我想每30秒运行一次异步任务。我实现了自己的聊天系统,我想每隔30秒检查一次新消息。

基本上,无论哪个活动正在运行,我都希望代码能够运行。

所以我正在考虑主菜单活动,如果用户使用该应用程序将永远存在,因为我在制作新活动时没有完成活动。但是,即使我打开一个新活动,代码仍然应该运行。

此外,代码应在应用关闭时停止。如果应用程序被最小化但代码仍然运行,我更喜欢。我打算在顶栏上显示通知图标。

如何在Android中执行此操作?

3 个答案:

答案 0 :(得分:0)

查看ScheduledExecutorService。这正是你所需要的。在此示例中,它将运行您的方法以每分钟检查新消息。 请记住为后台服务的清单添加适当的权限。

ScheduledExecutorService scheduleTaskExecutor = Executors.newScheduledThreadPool(5);

// This schedule a runnable task every minute
scheduleTaskExecutor.scheduleAtFixedRate(new Runnable() {

  public void run() {

checkNewMessages(); // your method to check for messages here

}
    }, 0, 1, TimeUnit.MINUTES); // you can also uses seconds

答案 1 :(得分:0)

你应该开始Service。服务正在运行时,您可以致电startForeground()添加所需的通知。现在,在服务运行时,您需要每隔30秒调用一次asynctask。一种选择是创建一个Handler并调用postDelayed来调用你的asynctask。在asynctask完成(失败成功)之后,回想一下postDelayed。当应用关闭时,您可以取消绑定或调用stopService。

答案 2 :(得分:0)

要回答您的问题,您可以开始运行IntentService,以便在后台运行。完成onHandleIntent中的所有工作后,您可以使用AlarmManager在30秒内重新安排它再次运行。

但是,每30秒轮询一次聊天应用程序是个糟糕的主意。你将不必要地杀死用户的电池。请改用推送通知。