我正在开发Android项目,我正在从Web服务器收集一些信息。每次应用程序启动时,我都会下载JSON数据并重新输入数据库中的信息。我有这种情况:
所以我需要知道如何做这件事:当我开始从应用程序启动时从json下载数据时,用户必须可以查看旧信息。当我准备好所有信息并且所有内容都被下载时,整个JSON我必须删除/更新/插入新数据,所有内容都必须快速发生,用户必须注意不到。
知道我该怎么办?
提前致谢!
答案 0 :(得分:1)
有三种可能性。
这是第一个'明显'的选择,直到你意识到框架有很多问题(比如how to handle onConfigChange)
这是最复杂的解决方案。首先,你必须知道这3件作品。因此,如果您不需要,则必须编写一个“哑”帐户,如果您有SQLLite,则必须编写“半哑”的ContentHandler。
我选择使用IntentService,我非常满意。
my.app.DATA_UPDATED
。并发送一个意图my.app.DATA_REQUESTED
IntentService
。答案 1 :(得分:0)
您需要使用 AsyncTask
step-1 从数据库中删除所有daa并在onPreExecute()方法中清除listview
step-2 从doBackground()中的服务器下载数据并保存到数据库
步骤3 onPostExecute使用最新数据更新列表视图
import android.content.Context;
import android.os.AsyncTask;
import android.view.View;
public class LoadingDataFromServer extends AsyncTask {
Context currentContext = null;
ListView listview = null;
boolean isCancelled = false;
// private ProgressDialog progressDialog = null;
public LoadingDataFromServer(Context context, ListView list) {
currentContext = context;
listview = list;
}
@Override
protected void onPreExecute() {
//delete all the daa from database
//clear listview
super.onPreExecute();
}
@Override
protected Object doInBackground(Object... params) {
// do background processing
try {
// getdata from server and store in SQLitedatabase
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Object result) {
// TODO Auto-generated method stub
// progressDialog.dismiss();
//update the listview after getting the data
super.onPostExecute(result);
}
@Override
protected void onCancelled() {
// TODO Auto-generated method stub
isCancelled = true;
super.onCancelled();
}
}