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