在android中使用緩存和脫機存儲
1、在android中使用緩存和脫機存儲
緩存可以加速你的應用程序,即使在網絡不可用時,用戶能夠更加流暢地使用你的應用程序使用緩存是相當簡單的,需要一個單一的代碼行。
導入 import com.shephertz.app42.paas.sdk.android.App42CacheManager
即可,同時需要設置緩存策略。
Policy.CACHE_FIRSTSetting
將激活所有數據的讀操作首先從緩存中獲取,如果緩存中數據可用且沒有失效,就直接從緩存返回,否則進行網絡請求這個數據,同時將這個數據更新或加入緩存中,你可以通過API設置緩存失效期,缺省是1一個小時。Policy.NETWORK_FIRST
首先從網絡獲取數據,然後更新緩存。如果網絡不可用,數據就從緩存中取出cache.Policy.NOCACHEBy
這是App42 SDK
默認,不使用任何緩存,總是僅從網絡讀數據。
設置緩存策略如下:
App42CacheManager.setPolicy(Policy.CACHE_FIRST);
緩存失效期:
App42CacheManager.setExpiryInMinutes(<EXPIRY_TIME_IN_MINUTES>);
案例代碼如下:
UserService userService = App42API.buildUserService(); String userName = "Nick"; userService.getUser(userName,new App42CallBack() { public void onSuccess(Object response) { User user = (User)response; if(user.isFromCache()){ //Response coming from Cache System.out.println("userName is " + user.getUserName()); System.out.println("emailId is " + user.getEmail()); System.out.println("is from cache is " + user.isFromCache()); } else{ //Response From Server System.out.println("userName is " + user.getUserName()); System.out.println("emailId is " + user.getEmail()); } } public void onException(Exception ex) { System.out.println("Exception Message"+ex.getMessage()); } });
If Response is from cache you will get isFromCache flag to true in the response so you can identify that data is real time or data is coming from cache.
如果響應來自緩存,你在響應中通過isFromCache
標識為true
,這樣你能分辨數據是實時的還是來自緩存的。
下面是需要在manifest.xml加入的:
<receiver android:name="com.shephertz.app42.paas.sdk.android.App42BroadcastReceiver"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED"/> </intent-filter> </receiver> <receiver android:name="com.shephertz.app42.paas.sdk.android.AlarmReceiver"/> <service android:name="com.shephertz.app42.paas.sdk.android.App42DataSyncService"/>
2、Offline storage離線存儲
離線存儲允許你在本地網絡的情況下不可用提交數據,當網絡可用時,服務器會同步。這在許多情況下是非常有用的,例如如果你的用戶玩遊戲,並取得瞭一些特定級別的完成。然而,在發送成績時,網絡斷瞭,那麼他的得分可能會丟失,使用脫機緩存會在本地網絡無法獲得情況下,保存他的得分,並將於稍後網絡恢復可用時與同步服務器的。
使用脫機:
App42API.setofflineStorage(true);
案例代碼:
//Set Offline Storage to True App42API.setofflineStorage(true); String gameName = "<Enter_your_game/level_name>"; String userName = "Nick"; BigDecimal gameScore = new BigDecimal(3500); scoreBoardService.saveUserScore(gameName, userName, gameScore,new App42CallBack() { public void onSuccess(Object response) { Game game = (Game)response; if(game.isOfflineSync()) { //Request is saved in cache System.out.println("Information is Stored in cache, will send to App42 when network is available"); } else { //Response Received From Server and is Succeseful System.out.println("Server Response : " + game); } } public void onException(Exception ex) { System.out.println("Exception Message"+ex.getMessage()); } });
到此這篇關於在android中使用緩存和脫機存儲的文章就介紹到這瞭,更多相關android使用緩存和脫機存儲內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- Android調用應用安裝界面方法
- 詳談@Cacheable不起作用的原因:bean未序列化問題
- Android permission denied原因歸納和解決辦法
- Android 文件存儲系統原理
- java實現簡單猜拳小遊戲