【发布时间】:2014-08-24 15:11:43
【问题描述】:
首先,我为我的英语道歉。
我需要不时地向服务器发送数据并查询该服务器中的数据,可能是每周一次。
所以我将使用 AlarmManager 来执行此操作。我想知道我是否可以在警报管理器中注册两个单独的待处理意图,一个用于将数据推送到服务器,另一个用于从服务器查询数据。我可以在每次应用程序执行时注册这两个意图吗?或者我是否需要测试我是否已经注册了这些意图?
我之所以这么问是因为我害怕我注册一个警报以从现在开始执行一周然后用户关闭应用程序并重新启动并且从现在开始一周再次注册警报最终将永远不会启动。
另外,使用 AlarmManager 注册要执行的服务是否安全?
哦,这是我正在使用的代码:
long WEEK_IN_MILLIS = AlarmManager.INTERVAL_DAY * 7;
PendingIntent querySyncService = PendingIntent.getService(context, 0, new Intent(context,
QuerySyncService.class), PendingIntent.FLAG_CANCEL_CURRENT);
PendingIntent pushSyncService = PendingIntent.getService(context, 1, new Intent(context,
PushSyncService.class), PendingIntent.FLAG_CANCEL_CURRENT);
AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
alarmManager.setInexactRepeating(AlarmManager.RTC, WEEK_IN_MILLIS, WEEK_IN_MILLIS, querySyncService);
alarmManager.setInexactRepeating(AlarmManager.RTC, WEEK_IN_MILLIS, WEEK_IN_MILLIS, pushSyncService);
我正在考虑将此代码放入某个方法中,然后每次应用启动时调用该方法。
而且我还看到我可能应该使用的解决方案是 SyncAdapter,但 SyncAdapter 似乎很脏,有很多代码什么都不做,例如,您需要一个 Stub Authenticator,然后是一个 Stub Authenticator Service一个 Stub Content Provider 和一个 Stub Content Provider Service,然后是 Sync Adapter 的大量代码,然后是另一组仅运行 SyncAdapter 的代码。这对我来说似乎太脏了,因为我不需要内容提供者,也不需要身份验证器。
【问题讨论】:
标签: android android-intent alarmmanager android-syncadapter