【问题标题】:How can I save data when offline in my Android app?如何在我的 Android 应用程序中离线时保存数据?
【发布时间】:2016-04-02 13:25:14
【问题描述】:

我正在用 Java 为 Android 创建一个应用程序。我可以将信息发送到网络服务,但是当我离线时我想存储信息并且当手机连接到互联网时我想将其发送到网络服务。 谁能帮我? 谢谢

【问题讨论】:

  • 将您要发送的数据存储在您的 sqlite 数据库中,并检查每次是否存在任何数据,在这种情况下,如果响应正常,再次调用 ws 并从数据库中删除这些行,否则不要' t 删除它们以便在连接可用时重试。就是这样!

标签: java android offline


【解决方案1】:
  1. 将数据存储在 SQLite 数据库中。你可以阅读here

  2. 如果连接发生变化,请检查 BroadcastReceiver 并更新在线数据库并从 Sqlite 数据库中删除内容。

    public void onReceive(Context context, Intent intent) {
        String s = intent.getAction();
        if (s.equals("android.net.conn.CONNECTIVITY_CHANGE")) {
            if (IsNetworkAvailable(context)) {
                // update your online data-base and delete all rows from SQlite
            }
        return;
       }
    }
    

方法isNetworkAvailable:

public static boolean isNetworkAvailable(Context mContext) {
    Context context = mContext.getApplicationContext();
    ConnectivityManager connectivity = (ConnectivityManager) mContext.getSystemService(Context.CONNECTIVITY_SERVICE);
    if (connectivity == null) {
        return false;
    } else {
        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.ACCESS_NETWORK_STATE"/>

【讨论】:

  • 感谢您的回答
【解决方案2】:

乍一看,离线存储和同步似乎很简单,但您需要小心并考虑以下几点:

首先熟悉平台中可用的storage options,选择最适合你的应用场景的。

其次,在efficient way 中设计您的同步机制,这样您的应用就不会耗尽电池寿命。

This 是一个很好的资源,可以检查 Android 应用程序的整个结构,该应用程序关心离线工作并在网络可用时与服务器正确同步。

【讨论】:

    【解决方案3】:

    将您的信息保存到SQLite 数据库,并在网络连接可用时使用BroadcastReceiver 进行侦听。当连接可用时,启动 Service 将保存的数据发送到您的网络服务。

    【讨论】:

      【解决方案4】:

      如果您上传数据,请检查 Internet 连接是否可用,如果没有,请将数据存储为文本文件或对象,并将其命名为 needToUpload1、2、3。

      然后,每当设备在线时,检查是否有任何类似名称的文件。如果是,请通过服务上传并删除文件。

      这只是我的看法,但实际上取决于数据。 你可以在这个网站上找到如何做每一步,所以我希望它会有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-28
        • 1970-01-01
        相关资源
        最近更新 更多