应用程序终止后,Google附近的API后台扫描无效

时间:2016-04-07 15:53:20

标签: android google-play-services beacon google-nearby

我有kontakt.io信标,我尝试使用附近的API编写应用程序进行后台扫描。

我使用此方法订阅消息:

SubscribeOptions options = new SubscribeOptions.Builder()
            // Finds messages attached to BLE beacons. See
            // https://developers.google.com/beacons/
            .setStrategy(Strategy.BLE_ONLY)
            .build();

    Nearby.Messages.subscribe(mGoogleApiClient, getPendingIntent(), options)
            .setResultCallback(new ResultCallback<Status>() {
                @Override
                public void onResult(@NonNull Status status) {
                    if (status.isSuccess()) {
                        Log.i(TAG, "subscribed successfully");
                        mSubState = SubState.SUBSCRIBING;
                        // Start background service for handling the notification.
                        getActivity().startService(getBackgroundSubscribeServiceIntent());
                    } else {
                        Log.i(TAG, "could not subscribe");
                        handleUnsuccessfulNearbyResult(status);
                    }
                }
            });

我的代码是根据此示例: https://github.com/googlesamples/android-nearby/tree/master/messages/NearbyBackgroundBeacons

我正确地收到消息,但是当我杀死应用程序时,没有更多的消息来了。

杀死申请后有没有办法从附近获取消息?

2 个答案:

答案 0 :(得分:1)

还没有真正尝试过使用过,但您是否考虑过/使用Service进行了检查?根据描述:

  

服务基本上可以采用两种形式:

     

<强>开始

     

当应用程序组件(例如活动)通过调用startService()启动它时,服务“启动”。 一旦启动,服务可以无限期地在后台运行,即使启动它的组件被销毁。通常,启动的服务执行单个操作,并且不会将结果返回给调用者。例如,它可能通过网络下载或上载文件。操作完成后,服务应该自行停止。

     

<强>结合

     

当应用程序组件通过调用bindService()绑定到它时,服务被“绑定”。绑定服务提供客户端 - 服务器接口,允许组件与服务交互,发送请求,获取结果,甚至跨进程间通信(IPC)进行交互。只要绑定了另一个应用程序组件,绑定服务就会运行。多个组件可以立即绑定到服务,但是当所有组件解除绑定时,服务将被销毁。

您可以创建一个Service来持续运行扫描,直到您选择停止/销毁它为止。文档本身已经启用了创建启动服务。请仔细阅读。

希望这会有所帮助。祝你好运。

答案 1 :(得分:0)

有两种杀死应用的方法。如果您在“设置”中找到该应用&gt;应用并按“强制停止”,或者等效,如果您运行adb shell am force-stop <package>,也会杀死附近的订阅。但是,如果您通过在最近视图中将其删除,或使用adb shell kill <process-id>来终止该应用,则附近的订阅应保持活跃并使用PendingIntent唤醒您的应用。