欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

在android中使用缓存和脱机存储

程序员文章站 2022-07-02 08:30:50
目录1、在android中使用缓存和脱机存储2、offline storage离线存储1、在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使用缓存和脱机存储内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!