1

現在、ドキュメントで説明されている方法と同様に、アプリケーションにロケーション フェンスを登録しています。ログを使用すると、コールバックの登録とブロードキャスト レシーバーが正しく呼び出されていることがわかります。ただし、アプリケーションを再実行すると、これらは起動されません。電話を再起動すると、再び機能します。

バックグラウンドでもフェンスを起動したいので、フェンスの登録を解除していません(レシーバーはアクティビティに関連付けられていません)。

アプリケーションの開発中にアプリケーションを複数回再実行しても、どうすればこれを機能させることができますか? ユーザーがアプリケーションを再インストールまたは更新するときに、フェンスが正しく登録されるようにするにはどうすればよいですか?

AwarenessFence私は使用して作成します

AwarenessFence allLocations = AwarenessFence.or(locationFences);

このように作成されたオブジェクトlocationFencesのコレクションはどこにありますかLocationFence

singleLocationFence = LocationFence.entering(latitude, longitude, FENCE_RADIUS); 
4

2 に答える 2

1

サービスでフェンス処理を行いましたが、サービスはバックグラウンドで実行できるため、正常に動作します。「onDestroy」が呼び出された場合、以前はフェンスを登録解除していたので、オペレーティング システムはこれらのフェンスを監視する必要がなくなりました。このサービスは、一度にしかサービスを提供できないため、「再実行」の問題も解決しました。

あなたの次のポイント

AwarenessFence allLocations = AwarenessFence.or(locationFences);

その作業、私はTimeFenceでそれを試しました

AwarenessFence allLocations = AwarenessFence.or(TimeFence.inInterval(new Date()), Long.MAX_VALUE));

しかし、より良い使用

AwarenessFence allLocations = locationFences;

AwarenessFence はすべての BeaconFences、Geofences、TimeFencee、(...) フォームの Awareness API の親であるためです。

于 2016-08-23T14:33:09.927 に答える