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