Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/210.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Android应用程序中脱机时如何保存数据?_Java_Android_Offline - Fatal编程技术网

Java 在Android应用程序中脱机时如何保存数据?

Java 在Android应用程序中脱机时如何保存数据?,java,android,offline,Java,Android,Offline,我正在用Java为Android创建一个应用程序。我可以向网络服务发送信息,但当我离线时,我想存储信息,当手机连接到互联网时,我想将信息发送到网络服务。 有人能帮我吗? 谢谢将您的信息保存到SQLite数据库,并在网络连接可用时使用BroadcastReceiver收听。连接可用时,启动将保存的数据发送到Web服务的服务。在上载数据的情况下,检查Internet连接是否可用,如果不可用,将数据存储为文本文件或对象,并按需要命名为Pload1、2、3 然后,每当设备处于联机状态时,检查是否有任何文

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

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

在上载数据的情况下,检查Internet连接是否可用,如果不可用,将数据存储为文本文件或对象,并按需要命名为Pload1、2、3

然后,每当设备处于联机状态时,检查是否有任何文件名为那样。如果是,请通过服务上传并删除该文件

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

< P>离线存储和同步看起来一目了然,但是你需要小心,考虑以下内容:

首先熟悉平台中可用的应用程序,并选择最适合您的应用程序场景的应用程序

第二,设计同步机制,使你的应用程序不会耗尽电池寿命

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

  • 将数据存储在SQLite数据库中。你可以阅读

  • 检查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;
    }
    
    publicstaticboolearnisnetworkavailable(Context-mContext){
    Context=mContext.getApplicationContext();
    ConnectivityManager connectivity=(ConnectivityManager)mContext.getSystemService(Context.connectivity\u SERVICE);
    if(连接性==null){
    返回false;
    }否则{
    NetworkInfo[]info=connectivity.getAllNetworkInfo();
    如果(信息!=null){
    对于(int i=0;i
    您还需要以下权限:

    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    
    
    
    将要发送的数据存储在sqlite数据库中,每次检查是否存在任何数据,在这种情况下,如果响应正常,请再次调用ws并从数据库中删除这些行,否则不要删除它们,以便在连接可用时重试。这就是全部!谢谢你的回答