Android LocalBroadcastManager:关闭应用程序时接收事件

Android LocalBroadcastManager:关闭应用程序时接收事件,android,localbroadcastmanager,Android,Localbroadcastmanager,我尝试将beaconinside sdk集成到我的应用程序中,并且我希望在我的应用程序关闭并从应用程序抽屉(最近的应用程序)中移除时接收通过Beaconservice发送的事件 现在我的代码看起来是这样的 BeaconFragment @Override public void onCreate() { super.onCreate(); // init beaconinside sdk using my token BeaconService.init(this, A

我尝试将beaconinside sdk集成到我的应用程序中,并且我希望在我的应用程序关闭并从应用程序抽屉(最近的应用程序)中移除时接收通过Beaconservice发送的事件

现在我的代码看起来是这样的

BeaconFragment

@Override
public void onCreate() {
    super.onCreate();

    // init beaconinside sdk using my token
    BeaconService.init(this, API_TOKEN);
}
BeaconHandler

public class BeaconHandler extends BroadcastReceiver {
    // ...

    public void onReceive(Context context, Intent intent) {
        // ...
    }
}
backgroundbeacervice

public class BackgroundBeaconservice extends IntentService {
    // ...
    public void onCreate() {
        // setup intent filter for beacon events
        IntentFilter beaconListenerFilter = new IntentFilter();
            // add intent filter for BeaconService (e.g. REGION_ENTER)

        // beacon event handler
        beaconListener = new BeaconHandler(this);

        // register the event handler to the LocalBroadcastManager
        registerBeaconEventHandler(beaconListener, beaconListenerFilter);
    }

    private void registerBeaconEventHandler(BroadcastReceiver receiver, IntentFilter filter) {
        LocalBroadcastManager.getInstance(this).registerReceiver(receiver, filter);
    }
}
到目前为止,它可以工作,但当我从最近的应用程序抽屉关闭应用程序时,它停止工作。我写信给Beaconinside的技术支持,他们告诉我使用一个服务在后台接收来自LocalBroadcastManager的事件


我的代码的哪些方面需要在服务类中移动,哪些方面可以保持不变?

事实证明,如果没有beaconinside的交互,这个问题就无法解决。所以我给他们发了一封邮件,他们告诉我这个问题在本周发布的新版本(2.8.0)中得到了解决。

事实证明,没有beaconinside的交互,这个问题是无法解决的。所以我给他们发了一封邮件,他们告诉我这个问题在本周发布的新版本(2.8.0)中得到了解决。

没错,你需要一个服务。服务应该注册一个接收者,并处理接收者发出的事件。因此,IntentService随后将收到BeacService发送的意图,因为它使用LocalBroadcastManager发送广播,对吗?如果设置正确,那么yesI现在在IntentService中移动了我的所有代码,所以在onCreate方法中我注册了我的BroadcastReceiver。它可以工作,但是如果我关闭应用程序,我的广播接收器就不会再接收事件了。是的,没错。这样做是为了让用户知道某些事情是在后台完成的。没错,您需要一个服务。服务应该注册一个接收者,并处理来自接收者的事件。因此IntentService随后将接收BearConservice发送的intent,因为它使用LocalBroadcastManager发送广播,对吗?如果设置正确,那么yesI现在将我的所有代码移动到IntentService中,因此在onCreate方法中我注册了我的BroadcastReceiver。它可以工作,但是如果我关闭应用程序,我的广播接收器就不会再接收事件了。是的,没错。这样做是为了让用户知道某些事情是在后台完成的。