ロケーション マネージャーからの GPS ロケーションを処理するフォアグラウンド サービスがあります。これらを一般的な「ロケーションコントローラー」シングルトンに保存しています。現在、私のアクティビティもこのクラスにアクセスしています。これは受け入れられますか?ハンドラーメッセージを使用するよりも効率的です。
2 に答える
この特定のケースでは、 に通信する必要があるロケーションの頻繁な更新が予想されるため、activity
; 位置情報サービスの方bind
が適切な解決策かもしれません。
したがって、基本的には、アクティビティonResume
でbind
サービスにオブジェクトを渡し、位置の更新が存在するたびに呼び出されるlistener
オブジェクトを渡します。また、でサービスを使用service
する必要があります。unbind
onPause
バインドする前にサービスを開始することに注意してください。これにより、アクティビティがフォアグラウンドでなくなった場合でも実行が継続されます。
私は非常によく似たケースを持っていますが、このソリューションは非常にうまく機能し、オンデマンドでアクティビティから呼び出すことができるメソッドを追加するservice
ことができます。getLastLocation()
メモリ リークが発生しないことが確実である限り、問題はありません。LocalBroadcastManager
(Android サポート ライブラリから)、Otto 、 kinなどの他の既存のメッセージ バス ソリューションは、バックグラウンドでシングルトンを使用します。
LocalBroadcastManager
or Otto などを使用することをお勧めします。それらはより適切にサポートされ、テストされているという理由だけで、独自のものを作成するよりも優れています。T