2017-07-03 104 views
0

我正在學習使用Google Service API獲取位置信息。但我越來越糊塗,因爲我看到人們使用兩種方式來獲得位置:使用Google Service 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; 
       } 
      } 
     }); 

可能有人請向我解釋的時候使用哪一個&這兩種方法獲得最後的已知位置有什麼區別?

回答

1

這兩個getLastLocation方法指向我們相同的文檔內容。但是使用新的FusedLocationProviderClientFusedLocationProviderApi簡單,因爲我們不處理google api客戶端和它的回調方法。它自動爲我們處理播放服務連接。只是它

FusedLocationProviderClient方法返回任務(即使得到最後知道的位置),恕我直言,這是由於處理播放服務的事情在內部。

0

在Android博客中,Google發佈了一個關於位置訪問的主題。

Reduce friction with the new Location APIs

在,谷歌是說不要使用GoogleApiClient。

在鏈接中他們有詳細的解釋

現在的代碼工作,但它的效果並不理想,有幾個原因:

  • 這將是很難重構到共享類,如果,例如, 你想訪問定位服務於多個活動。
  • 該應用程序在onCreate中樂觀地連接,即使稍後(例如,在用戶輸入之後)不需要位置服務 。
  • 它不處理應用程序無法連接到谷歌的情況 播放服務。
  • 在開始 位置更新之前,有很多樣板連接邏輯。

一個更好的開發經驗

新LocationServices API是更簡單,會讓你的代碼不容易出錯。連接邏輯是自動處理的,你只需要附加一個完成監聽器:

+0

那麼,第二種選擇更好? –

+0

按照博客是的,它具有較少的樣板 – Jarvis

相關問題