2017-07-03 5 views
0

GoogleサービスAPIで場所を取得することを学んでいます。これは1 &を使用するとき、誰かが私に説明してもらえGoogleサービスAPIで最後に知られている場所を取得

1.

FusedLocationProviderApi fusedLocationProviderApi = LocationServices.FusedLocationApi; 
Location lastKnownLocation = fusedLocationProviderApi.getLastLocation(googleApiClient); 

2.

FusedLocationProviderClient mFusedLocationClient = LocationServices.getFusedLocationProviderClient(this); 
... 
Task<Location> locationTask = mFusedLocationClient.getLastLocation(); 
     locationTask.addOnSuccessListener(this, new OnSuccessListener<Location>() { 
      @Override 
      public void onSuccess(Location location) { 
       // Got last known location 
       if (location != null) { 
        mLastKnownLocation = location; 
       } 
      } 
     }); 

:私は人々が場所を取得する2つの方法を使用しましたので、しかし、私は混乱しています最後に知られている場所を得るためのこれらの2つのアプローチの違いは何ですか?

答えて

1

getLastLocationの両方の方法で、私たちは同じドキュメントの内容を指摘します。しかし、新しいFusedLocationProviderClientを使用するとFusedLocationProviderApiより簡単です。Googleのapiクライアントとそのコールバックメソッドを扱わないためです。それは私たちのためのプレイサービスの接続を自動的に処理します。ちょうど

FusedLocationProviderClientメソッドは、(最後の既知の場所を取得していても)タスクを返しますが、これは内部的にプレイサービスの処理に起因します。

0

Androidのblog-spot googleは、位置情報アクセスに関する1つのトピックを投稿しました。そのグーグルで

Reduce friction with the new Location APIs

GoogleApiClientを使用していないと言っています。

詳細な説明はです。

今のコードは動作しますが、それはいくつかの理由のための理想的ではありません。例えば、 はあなたが複数の活動に場所サービスにアクセスすることを望んでいた、場合には、共有のクラスにリファクタリングするのは難しいだろう

  • ロケーションサービス が後で(たとえば、ユーザー入力後に)必要ない場合でも、アプリケーションはonCreateで楽観的に接続します。
  • アプリがGoogle プレイサービスに接続できない場合を処理しません。
  • ロケーションアップデートを開始する前に、多くの定型的な接続ロジックがあります。

新しいLocationServices APIは、より良い開発者の経験がはるかに簡単であり、あなたのコード以下のエラーが発生しやすいようになります。接続ロジックは自動的に処理され、単一の完了リスナーのみを接続する必要があります。

+0

したがって、2番目のオプションが優れていますか? –

+0

ブログごとにはい、それはあまり定型文を持っていません – Jarvis

関連する問題