zoukankan      html  css  js  c++  java
  • Adobe AIR简单的缓存技术

    为了解决网络加载数据缓慢提高用户体验,如何解决这个问题,有两种思路。

    Pointillism最近发布的移动app,解决了那些边远地域[remote area]的用户使用游戏的问题。
    一是预加载游戏可能会用到的所有内容。

     要么将所有数据/图片与应用一同打包,要么强迫用户在启动App的时候立即下载相关数据。

    另一种方法是部署某种形式的缓存策略

    图片缓存超简单,Dan Florio (PolyGeek)写了个名为ImageGate的组件,实现了Image组件和缓存机制。这个组件很好上手,只要在你MXML或ActionScript中将<s:Image>替换为他的组件即可。这样一来,查看的图像就会被缓存。我将他的组件做了些调整,发在了我的Apache空间上。我将Image组件替换为BitmapImage,并在iOS设备上的适当位置增加了一个小补丁以支持图片缓存。

    缓存数列难度不会提升太大。AIR有个内置的“写入磁盘”功能——SharedObjects。SharedObjects最初是作为替代浏览器中cookie的存在,而在AIR里帮助我们将变量长期存储。每当有数据从服务器返回,我变将它作为SharedObject存储起来。这是一个非常好的策略,允许我们即刻显示旧数据并在当下实时更新新数据。我们的数据的更改并没有那么频繁,最多可能就只是一天更新一次罢了。

    选一个数据管理器的构造函数来看:

      

    View Code
    1 so = SharedObject.getLocal("org.pointi.cache");
    2 if (so.data.pointsList == null)
    3 {
    4 so.data.pointsList = new Array();
    5 so.flush();
    6 }

    服务器返回数据时,进行:

    View Code
    1 so.data.pointsList[curHuntID] = event.result as ArrayCollection;
    2 so.flush();

    最后,当我们想读回数据,以下就是所有需要做的(pointsList是一变量,要发送到我们所要调用的组件):

    View Code
    1 ro.getPointList(huntID, userID); //call the remote function on the server
    2 if (so.data.pointsList[huntID] != null)
    3 {
    4 pointsList = so.data.pointsList[huntID] as ArrayCollection;
    5 }

    对所有数列做类似的设置,我们就可以保持服务器与客户端同步。

     

     

  • 相关阅读:
    webpack的最简单应用,只使用js与css的打包
    数据统计表插件,highcharts插件的简单应用
    C#中的特性 (Attribute) 入门 (二)
    C#中的特性 (Attribute) 入门 (一)
    SQLServer存储过程入门
    C#拖拽操作
    C#剪切板
    .Net中的IO
    Android四大组件-服务
    AlertDialog对话框
  • 原文地址:https://www.cnblogs.com/ztdy/p/2731749.html
Copyright © 2011-2022 走看看