2014-07-26 49 views
2

Android:当互联网不可用时,如何使用sqlite数据库存储用户数据,然后在设备连接到互联网时自动将存储的数据与服务器同步(我希望场景如何工作) 我的数据将包含字符串,以及图像, 但我将存储图像路径,而不是在sqlite数据库中的图像。Android:如何同步sqlite数据与服务器

如果有人可以用简单的示例代码解释我,那么它将不胜感激,只是一个初学者。

+0

在这里寻找合理的解释。 http://stackoverflow.com/questions/10829371/sync-data-between-android-app-and-webserver – ditkin

+0

在这里寻找如何找出当你有网络连接和发送数据到服务器:http:// stackoverflow .com/questions/22900354/how-to-queue-up-data-for-server-dispatch-on-android – ditkin

回答

7
  1. 在您的应用程序中创建一个SQLite数据库,以便在本地存储所有信息。在这里,您可以获得关于为应用程序创建和维护SQLite数据库的详细教程。 SQLite Tutorial

  2. 内,您的SQLite表的你可以做一个像申请isSynced和切换它的位从0到1,这取决于该记录的服务器或不更新。

  3. 创建一个服务,您可以在应用程序启动时运行该服务,但只有在服务未运行时才进行检查。该服务将扫描数据库的所有表,每2分钟isSynced位是0即需要更新到服务器的那些记录,确保在扫描数据库之前检查互联网连接,以便它可以同时发送记录。此时您将获得需要在服务器上更新的记录列表。现在打你的服务在环路记录发送给服务器,一旦一条记录被成功地保存在服务器上,确保以更新它的isSynced位为1,在这里,你可以阅读Service in Android

  4. 一个详细的教程
  5. 在-为了检查互联网连接,你可以试试下面的代码:

    public static boolean isConnected(Context context) { 
        ConnectivityManager connectivity = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); 
        if (connectivity != null) { 
         NetworkInfo[] info = connectivity.getAllNetworkInfo(); 
         if (info != null) { 
          for (int i = 0; i < info.length; i++) { 
           if (info[i].getState() == NetworkInfo.State.CONNECTED) 
            return true; 
          } 
         } 
        } 
        return false; 
    } 
    

您还需要添加在你的清单文件以下权限:

<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 

您还可以检查这个tutorial,这将有助于你与Web服务通信

希望这将有助于使在实现你的目标。

+0

thanx buddy ..我懂了... –

相关问题