【发布时间】:2013-07-18 07:48:37
【问题描述】:
我正在开发一个 Android 应用程序,我需要在其中实现一个侦听器,该侦听器接收事件并在收到此类事件时更新应用程序数据库和一些 UI 元素。侦听器需要在应用程序运行的整个过程中运行。
你们能否就如何以最佳方式实现这一点给我一些建议? 一些最佳做法?
PS:我正在考虑将此事件侦听器集成到服务中。你怎么看 ?
【问题讨论】:
-
这取决于您的活动以及您的活动是否应该一直可见
我正在开发一个 Android 应用程序,我需要在其中实现一个侦听器,该侦听器接收事件并在收到此类事件时更新应用程序数据库和一些 UI 元素。侦听器需要在应用程序运行的整个过程中运行。
你们能否就如何以最佳方式实现这一点给我一些建议? 一些最佳做法?
PS:我正在考虑将此事件侦听器集成到服务中。你怎么看 ?
【问题讨论】:
如果您正在考虑使用相同的服务,请在服务的 onStartCommand() 中添加 START_STICKY 作为返回值。如果 Android 操作系统因缺乏资源而将其终止,这将重新创建您的服务。 最佳实践是使用 BroadcastReceivers 并在 Manifest.xml 文件中注册它们。它们一直运行并且不会被操作系统杀死
【讨论】:
您应该使用从 BroadcastReceiver 扩展的类。覆盖更新应用程序数据库的 onReceive 方法。
那么您应该使用 AlarmManager 类来安排事件。调度它们的方式有三种:一次事件使用 set 方法,重复事件使用 setRepeating 方法和 setInexactRepeating。
这里有一个很好的教程:Refer this links
使用这种方法,即使您的应用程序没有运行,您也可以运行侦听器,即使您的手机处于待机模式,您也可以接收事件。这是服务无法做到的。
要使用 AlarmManager 唤醒您的手机,别忘了在 Manifest 文件中添加下一行(<application> 之前):
<uses-permission android:name="android.permission.WAKE_LOCK"/>
希望这会有所帮助。
【讨论】: