5

问题:1 => 我想每天从上午 9 点到下午 4 点运行一项服务。我计划了两种方法。哪种方法最好?

方法1: 内部服务:(该服务在首次应用程序启动时在创建活动时初始化)

if (9 AM <=current time<=4 PM)
{
  fetch data from server. 
}

方法二:

在Activity oncreate 中使用Alarm manager 并基于alarm manager 启动一个服务。然后第二天醒来启动服务。

哪种方法最好?

问题:2 =>如何以编程方式查找服务是否正在运行?

4

1 回答 1

1

编写一个 BroadcastReciever 来接收 ON_BOOT 广播(您需要在清单中添加适当的权限和意图过滤器)。BroadcastReceiver 的存在仅用于使用警报管理器创建上午 9 点的通知。计划的警报具有将启动服务的 PendingIntent。显然,将警报设置为每 24 小时重复一次。

启动后,该服务会正常运行,直到下午 4 点,此时它会自行停止。

服务的 onStartCommand() 方法应返回适当的标志,以使系统在崩溃或被终止时重新启动它。

我唯一不知道的是如何在第一次安装服务时自动启动它。等待设备重新启动不是很实用。当我编写这样的应用程序时,它们通常与具有启动和停止服务的控件的 Activity 结合使用。

于 2012-11-17T04:53:24.000 回答