Android:如何将sqlite数据与服务器同步

时间:2014-07-26 18:09:36

标签: android sqlite

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

如果有人能用简单的示例代码解释我,那么我只会感到很开心。

1 个答案:

答案 0 :(得分:9)

  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;
    }
    
  6. 您还需要在清单文件中添加以下权限:

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

    您还可以查看此tutorial,以帮助您与网络服务进行通信

    希望这有助于实现目标。