多くのアクティビティでユーザーの現在の場所を使用する必要があるアプリを作成しています。すべてのアクティビティにロケーション クライアントを実装したくありません。アプリで現在地を使用する最良の方法は何ですか? おそらくバックグラウンドサービス?もしそうなら、どうすればそれを使うことができますか?例はありますか?
3 に答える
まず、「Hemant Chand Dungriyal」の回答が間違っています。このクラスは Service から継承されていますが、Service コンポーネントによって提供される機能を使用していないため、基本的には単なる通常のクラスです。「extends Service」部分を削除することもできます。(どうやら私はコメントを付けるのに十分な評判を持っていません!)
全体として、各クライアントが Android で LocationProvider サービスへの独自の接続を管理する方が良いと思います。このようにして、ニーズに合った場所をリクエストできます。たとえば、アクティビティが大まかな位置のみを必要とする場合と、システムからの最後の既知の位置を必要とする別のアクティビティと、詳細な場所を必要とする別のアクティビティの場合、それらすべてに詳細な場所を指定することでシステム リソースを浪費することはありません。
ただし、アプリのすべての部分で適切な場所が必要であることがわかっている場合は、Service を使用することも 1 つのオプションです。ただし、サービスのライフサイクルを管理する必要があります(サービスをバインドするか、サービスを開始するか、いつ作成し、いつ破棄するかなど)。また、すべてのアクティビティがいつ閉じられ、安全であるかを知る必要があります。サービスをシャットダウンします。
別の方法は、アプリケーション クラスにコードを実装することです。最初のアクティビティがアクセスする必要があるときに初期化でき、すべてのアクティビティが閉じられたらシャットダウンできます (ここでも、場所を知る必要がある目に見えるアクティビティがまだあるかどうかを把握するメカニズムが必要です)。
実装例については、ググるだけでかなりの数を見つけることができると思います。
Google Play サービスを使用してこの例に従い、結果の FragmentActivity から場所を必要とするアクティビティを拡張することをお勧めします: http://developer.android.com/training/location/receive-location-updates.html
Play ストア以外で公開する場合は、Android の古い位置情報サービス (またはそれらを利用するライブラリ) を使用できます。アプリケーションから実行することも可能ですが、基本の Activity クラスはシンプルであり、よりクリーンなライフサイクル管理を実現し、区分化します。ロケーションコード。