当我们在开发手机App的时候可能需要实现断网也可以访问的应用场景,例如百度旅游、在路上等等这样的软件,就支持离线功能。里面有一个业务,就是用户可以在没有网络的情况下也可以使用游记添加、游记删除的功能。那么怎么做到断网后仍然可以使用我们的app呢?下面我谈谈离线app的实现方式。
   在我最近做的一个项目里,实现了离线访问的功能。这款软件是与教育有关的一款软件,主要用户是高中老师和高中的家长,用户可以通过这款app,得到学生
成绩、学生消费等等情况。但是这个app需要实现离线访问的功能,那么什么时候更新数据呢?这款软件中提供了三种数据更新策略,从而实现了离线app。
1、用户登录时更新数据
  当用户登入时候,从服务器获取数据,如学生成绩、学生消费等。这里的话数据量不是很大,但是初次登入时所花费的时间还是多点,但是在用户可接受范围。
这里面有一个问题,就是第二次登入时候,还要重新下载一次数据吗?显然可以采取一种方式只需要一次下载就行,后面的假如服务端有数据更新,那么,可以采取一个状态标志,当状态变化时就更新数据。
2、断网情况
  假如用户断网了,那么就只需从数据库拿到数据就行。这里面需要写一个Service来监听网络变化,当连上网络的时候,服务立即更新数据。
3、定时更新
有这种情况用户登入app之后,按了home键,也就是说用户没有退出程序,那么这种情况怎么保证app上与服务器的数据是一致的呢。这个时候可以写一个定时服务AlarmService,通过这个服务定时,如1个小时更新客户端数据。
     这种实现机制的整体思想就是我们的客户端只于本地数据库通信,而数据库通过上面三种机制实现与服务端数据的同步。