我有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
我正确地收到消息,但是当我杀死应用程序时,没有更多的消息来了。
杀死申请后有没有办法从附近获取消息?
答案 0 :(得分:1)
还没有真正尝试过使用过,但您是否考虑过/使用Service进行了检查?根据描述:
服务基本上可以采用两种形式:
<强>开始强>
当应用程序组件(例如活动)通过调用startService()启动它时,服务“启动”。 一旦启动,服务可以无限期地在后台运行,即使启动它的组件被销毁。通常,启动的服务执行单个操作,并且不会将结果返回给调用者。例如,它可能通过网络下载或上载文件。操作完成后,服务应该自行停止。
<强>结合强>
当应用程序组件通过调用bindService()绑定到它时,服务被“绑定”。绑定服务提供客户端 - 服务器接口,允许组件与服务交互,发送请求,获取结果,甚至跨进程间通信(IPC)进行交互。只要绑定了另一个应用程序组件,绑定服务就会运行。多个组件可以立即绑定到服务,但是当所有组件解除绑定时,服务将被销毁。
您可以创建一个Service
来持续运行扫描,直到您选择停止/销毁它为止。文档本身已经启用了创建启动服务。请仔细阅读。
希望这会有所帮助。祝你好运。
答案 1 :(得分:0)
有两种杀死应用的方法。如果您在“设置”中找到该应用&gt;应用并按“强制停止”,或者等效,如果您运行adb shell am force-stop <package>
,也会杀死附近的订阅。但是,如果您通过在最近视图中将其删除,或使用adb shell kill <process-id>
来终止该应用,则附近的订阅应保持活跃并使用PendingIntent唤醒您的应用。