11

我正在编写一个需要定期检查服务器是否有新消息并通知用户的应用程序。我已经看到一些使用 AlarmManager 来点击 BroadcastReciever 的示例,这似乎是正确的做法,但我似乎无法让它工作。

谁能告诉我这类事情的分步教程(重复警报会触发某种触发通知的背景代码)?

TIA

4

1 回答 1

32

这是一个完整的例子:http ://android-in-practice.googlecode.com/svn/trunk/ch02/DealDroidWithService/

这个例子使用的模式,我发现一个似乎运作良好的模式是使用启动接收器来设置AlarmManager (当然也检查从你的主Activity开始轮询,以防你的应用程序已安装且系统未启动)并让AlarmManager为另一个接收器发送Intent : http ://android-in-practice.googlecode.com/svn/trunk/ch02/DealDroidWithService/src/com/manning/aip /dealdroid/DealBootReceiver.java

然后从AlarmReceiver启动一个IntentServicehttp ://android-in-practice.googlecode.com/svn/trunk/ch02/DealDroidWithService/src/com/manning/aip/dealdroid/DealAlarmReceiver.java

然后从您的IntentService进行网络调用以轮询数据或您需要做的任何事情。IntentService 会自动将您的工作置于后台线程中,非常方便: http ://android-in-practice.googlecode.com/svn/trunk/ch02/DealDroidWithService/src/com/manning/aip/dealdroid/DealService.java

也检查这些类的文档,里面有很多内容。

这个例子的警告是它没有处理唤醒锁间隙(如果你需要的话,优秀的 CommonsWare 代码会这样做),但它可能会给你一些关于如何潜在地解决“使用 AlarmManager 和服务的轮询”的想法东西。

更新:代码现在在这里:https ://github.com/charlieCollins/android-in-practice

于 2010-10-05T00:10:07.400 回答