2016-08-16 35 views
0

我正在開發一個使用Google Places API的Android應用程序,並希望爲用戶訪問的地點詳細信息活動實施搜索歷史記錄ListView活動。那麼用戶可以進入此頁面並在此處查看搜索歷史記錄,而無需執行其他搜索。這將增加用戶體驗,並減少返回到Google Places數據庫的API調用數量。在Android設備上本地緩存Google Places API數據以獲取歷史記錄功能

我只打算顯示地名和地址,沒有別的。

所以我做了一些研究,發現這可以通過緩存數據,並使用下面的方法獲取後面上的活動來實現:

共享偏好

內部存儲

SQLite數據庫

在上述選項中,共享偏好設置似乎適用於設置和偏好設置,最後2項可以滿足我的要求。

1st Question:我可以在設備上本地緩存Google Places API數據並將其恢復顯示在歷史記錄活動上嗎?我的應用程序沒有數據庫,所以本地設備存儲將是唯一的選擇。我也檢查了下面的鏈接,他們說我可以緩存或存儲place_id而不是服務以外的其他內容。這意味着我可以在應用程序或內部設備存儲中緩存地點名稱和地址?如果我只能存儲place_id,那麼每次用戶訪問歷史活動時,是否必須進行單獨的API調用以檢索地點名稱和地址?如果用戶有50個列表呢?

https://developers.google.com/places/web-service/policies#pre-fetching_caching_or_storage_of_content

https://developers.google.com/maps/terms#section_10_5

第二個問題:如果允許我再用來存儲和數據的負荷(N)數量,直到用戶定期清除歷史他們會去很多的其中之一。

請幫忙?

+0

我仍然在努力實施這一點,需要清除我的上述問題。有人可以幫幫我嗎 ? – Vino

回答

0

我建議你使用SharedPreferences,對於任何特定的偏好設置,所有客戶端共享此類的一個實例。對首選項的修改必須通過一個SharedPreferences.Editor對象,以確保首選項值保存在一致的狀態下,並在它們被提交到存儲時保持控制。從各種get方法返回的對象必須被應用程序視爲不可變的。接口在共享偏好訪問和修改由getSharedPreferences(String, int)

返回到存儲值偏好數據:

SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this); 
SharedPreferences.Editor editor = preferences.edit(); 
editor.putString("Name","Harneet"); 
editor.apply(); 

要從共享偏好檢索值:

SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this); 
String name = preferences.getString("Name", ""); 
if(!name.equalsIgnoreCase("")) 
{ 
    name = name + " Sethi"; /* Edit the value here*/ 
} 
+0

謝謝Noogui。我測試了你的代碼,它在textview中像一個值的魅力。但是,當我訪問另一個頁面時,它將刪除最後一個條目並加載最新的條目。另外我的是一個listview和listitem有2個textview(地點名稱和地址)。現在我如何獲得共享首選項數據在列表視圖中列出而不會清除以前的數據? SharedPreferences也適用於listview,因爲隨着用戶訪問頁面,項目越來越多? – Vino