Android 要更新小部件,是否需要服务?

Android 要更新小部件,是否需要服务?,android,android-intent,widget,Android,Android Intent,Widget,我正在开发一个小部件,它将每30秒显示一次随机提示。提示从服务器获取。 我已经使用报警管理器来做这件事 我使用了以下两种方法 第一个:使用服务。 我已经从widget provider类的OnUpdate方法启动了一个intent服务。在该服务中,我已初始化asynctask以从服务器获取提示,然后设置警报,该警报将在30秒后关闭,使用新的提示更新小部件并停止服务。当警报关闭时,它发送启动我从OnUpdate启动的意图服务的意图。所以服务将再次初始化asynctask以从服务器获取提示,设置警报

我正在开发一个小部件,它将每30秒显示一次随机提示。提示从服务器获取。 我已经使用报警管理器来做这件事

我使用了以下两种方法

第一个:使用服务。

我已经从widget provider类的OnUpdate方法启动了一个intent服务。在该服务中,我已初始化asynctask以从服务器获取提示,然后设置警报,该警报将在30秒后关闭,使用新的提示更新小部件并停止服务。当警报关闭时,它发送启动我从OnUpdate启动的意图服务的意图。所以服务将再次初始化asynctask以从服务器获取提示,设置警报并停止。这将继续并定期刷新提示。当小部件从主屏幕上移除时,我已经取消了alram

第二个:使用接收器

从小部件提供程序类的onEnabled()方法创建了重复报警。当警报响起时,它会投射出一个自定义的意图。在widget provider类中,我定义了一个listner,它将接收这个意图。接收到意图后,初始化asynctask以从服务器获取提示并使用新提示更新小部件(代码是用onReceive()方法编写的)。警报每30秒重复一次,因此将收到意图并定期刷新提示。当小部件从主屏幕上移除时,报警被取消

在这两种情况下,都将报警类型用作AlarmManager.RTC,以便在alram关闭时不会唤醒设备

我想知道是否有必要编写一个服务来更新widget?我是说哪种方法更好?还有别的方法吗

提前谢谢


奎师那

谢谢雷基尔的回复。我将减少更新次数。