如何在我的Android应用程序中离线时保存数据?

时间:2015-12-28 17:22:22

标签: java android offline

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

4 个答案:

答案 0 :(得分:3)

  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;
       }
    }
    
  3. 方法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"/>
    

答案 1 :(得分:1)

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

答案 2 :(得分:1)

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

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

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

答案 3 :(得分:1)

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

首先熟悉平台中提供的storage options,并为您的应用场景选择最方便的。

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

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