2011-08-23 42 views
1

在我的应用程序中,我使用广播接收机来检测之前记录和注册的接近警报更改。但是当广播接收器接收到接近警报时,我需要做我的应用程序所做的事情。我正在创建服务,当应用程序第一次打开时,我正在考虑使用该服务来做广播接收调用时的那个工作,因为即使应用程序被操作系统杀死,我希望我的应用程序能够正常工作。这种情况的最佳做法是什么?我在正确的轨道上吗?广播接收机和服务组合的最佳做法

编辑:而且我也使用

<intent-filter> 
    <action android:name="android.intent.action.BOOT_COMPLETED" /> 
</intent-filter> 

BOOT_COMPLETED意图过滤器来重新注册我的广播接收器,如果用户在启动设备。

+0

请把它标记为答案是否能解决你的问题.. – 2012-12-10 04:40:22

回答

1

是的,你是在正确的轨道

在BootCompleted你就可以开始在广播接收器class.As的的onReceive()方法 服务时 andoid手机将开始它会广播意图。 记住永远不要在完整的应用程序注销该广播

+0

现在,broadcastreciever将在启动时被注册,但我所有的接近警报会因此很可能它不会收到任何东西,因为我registerd提醒我的申请,但是,走了启动应用程序不会出现(我在应用程序启动时添加了所有我的接近警报),所以我的proximityAlerts。我的应用程序必须重新打开以重新注册接近警报,否则我应该在另一个地方重新注册它们? –

+0

onBootup你也可以启动一个应用程序 – Sameer

+0

是比用户将面对的应用程序的用户界面我认为那不是他们想要的东西。我想在后台建立这个 –

0

我知道,线程是旧的,但:

  1. 如果使用BOOT_COMPLETED过滤意图,不要忘记启动完成android.permission.RECEIVE_BOOT_COMPLETED的权限。

  2. 这取决于你的应用程序的逻辑,但如果你的逻辑需要启动一个永久后台服务,在后台执行一些逻辑(侦听传感器数据等),你可以启动服务和其他需要的初始化你的应用程序类。这将向您保证,一旦您的BroadcastReceiver的onReceive被调用(即使在启动完成后),您的Application onCreate已经被调用,您的所有初始化都将准备就绪。