我正在用Java创建Android应用。我可以将信息发送到网络服务但是当我离线时我想存储信息,当手机连接到互联网时,我想将其发送到网络服务。 谁能帮我? 感谢
答案 0 :(得分:3)
将您的数据存储在SQLite数据库中。您可以阅读here。
检查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"/>
答案 1 :(得分:1)
将您的信息保存到SQLite
数据库,并在网络连接可用时使用BroadcastReceiver
进行监听。当连接可用时,启动Service
将保存的数据发送到您的Web服务。
答案 2 :(得分:1)
如果您上传数据,请检查互联网连接是否可用,如果没有,请将数据存储为文本文件或对象,并将其命名为needToUpload1,2,3。
然后,每当设备在线时,检查是否有任何名称相同的文件。如果是这样,请通过服务上传并删除该文件。
这只是我的意见,我将如何做,但真的取决于数据。 你可以找到如何在这个网站上做每一步,所以我希望它会有所帮助。
答案 3 :(得分:1)
离线存储和同步乍一看似乎很简单,但您需要小心并考虑以下因素:
首先熟悉平台中提供的storage options,并为您的应用场景选择最方便的。
其次,在efficient way设计同步机制,这样您的应用就不会耗尽电池寿命。
This是一个很好的资源,可以检查Android应用程序的整个结构,该应用程序关心脱机工作并在网络可用时与服务器正确同步。