【发布时间】:2013-03-06 00:33:49
【问题描述】:
我要做的是编写一个应用程序,该应用程序可以登录到我的电子邮件帐户并按照用户设置的定期检查收件箱和已发送邮件。
我有一些疑问,所以我希望它不会因为它的长度而被忽略。
- 我想我需要一个
BroadcastReceiver在手机完成启动后启动AlarmManager。 - 我需要通过
AsyncTask来阅读主 UI 线程中的电子邮件。但是,我读到Services 也运行在单独的线程上? - 从
AlarmManager中的PendingIntent(为什么是PendingIntent而不是正常的Intent?)我应该选择getBroadcast()还是getService()? - 我对整个过程的理解是:
- 手机完成启动,触发广播
-
BroadcastReceiver获取事件并设置AlarmManager -
AlarmManager在特定时间触发Intent -
BroadcastReceiver获取事件 -
BroadcastReceiver开始Service -
Service开始AsyncTask
对吗?似乎很啰嗦。如果我选择getService() 而不是getBroadcast() 作为PendingIntent,我可以跳过上述步骤中调用第二个广播,直接转到Service吗?
重读这篇我想我没有问具体问题,但我更想知道我的理解是否正确,或者我是否完全迷失了(我觉得我是!)
更新:我想我会使用他们听起来不错的意图服务,因为我可以直接从警报管理器中调用它们。但是,仔细阅读后发现,服务可能无法保持足够长的唤醒时间,因此我可能不得不使用广播接收器才能使用唤醒锁,这是我现在正在进一步调查的问题。
Commonsware 编写了一个名为 WakefulIntentService 的有用包装器,我想我会用它来帮助我自己做唤醒锁操作
【问题讨论】:
标签: android android-asynctask android-service alarmmanager android-broadcast