我是安卓系统的新手,我制作了一个应用程序,可以提取数据并将数据发布到服务器,在在线模式下运行良好。但我想让它也能在离线模式下工作,当没有互联网连接或网络故障时。当net可用时,它还应该对服务器数据库进行更改(更新)。我做了很多R&D,但没有得到有用的信息。
请有人指导我一些有用的步骤,示例代码(如果可能)或任何链接,使应用程序处于离线模式。
- 您需要定义应用程序的在线和离线两种模式
- 监视应用程序中的网络连接事件以确定脱机/联机模式,您需要为此编写BroadcastReciever
- 在联机模式下,连接到服务器并交换此时需要执行的任何数据
- 同时,在脱机模式下,如果需要,持久存储数据
您所问的问题实际上非常复杂。
我花了整整一年的时间试图解决这个问题,并在SyncIt项目中发表了我的作品,该项目位于http://forbesmyester.github.io/SyncIt/。
有:
- 本地版本控制系统https://github.com/forbesmyester/SyncIt
- 服务器组件https://github.com/forbesmyester/syncit-server
- 连接监控组件https://github.com/forbesmyester/SyncItControl
- 还有一个基本的引导项目,它会给你一个超级基本的待办事项列表式项目,你可以把它作为你项目的基础。。。https://github.com/forbesmyester/SyncItBootstrap
我建议您从阅读本地版本控制组件开始,然后转到连接监控组件。
使用SQLite数据库。当没有互联网时,将数据保存在数据库中。然后在互联网恢复时和服务器同步数据。
http://www.androidhive.info/2011/11/android-sqlite-database-tutorial/
您可以在android应用程序中使用SQLite数据库。离线时,您可以将所有内容保存在本地数据库中,当应用程序联机时,您就可以将本地数据库和服务器数据库同步。
为了在android应用程序中创建SQLite本地数据库,您可以在github 中检查以下示例代码(示例项目)
https://bitbucket.org/kavi707/grocery_items_app/src
干杯。。。
这里没有互联网就无法获取数据。但使用旧数据是可能的。一旦您从互联网下载数据,请将其存储到数据库中。这里大多数人建议SQLite database
。我的建议是使用任何人数据库(SQLite or SQLCipher
)。之后,在上传您的数据之前,只需将其插入数据库并从数据库中发布即可。因为一旦发生网络故障,数据就不会丢失。
Broadcast Receiver
:
此广播接收器用于通知您网络更改。一旦网络连接,写下你的邮政编码。也许这里也有可能出现网络故障。但数据仍在数据库中,所以不会丢失。