我有一个问题。我有一个asynctask,其中我连接到一个Web服务,将数据放入数据库。这没关系,它的工作原理。但我有一个问题,我想单击REFRESH(多数民众赞成时,我做的Web服务)后,进度条..Android - 用webservice缓慢ProgressDialog AsyncTask
当我刷新,需要2秒,而我的屏幕冻结,然后开始进度条稍稍消失,但是在进度条开始之前完成。
这里是的AsyncTask的代码
private class tareaActualizar extends AsyncTask<Void, Void, Boolean> {
private static final String DEBUG_TAG = "actualizo";
private ProgressDialog pd = new ProgressDialog(ShamanOperativoActivity.this);
@Override
protected void onCancelled() {
Log.i(DEBUG_TAG, "onCancelled");
pd.dismiss();
}
@Override
protected void onPostExecute(Boolean result) {
Log.i(DEBUG_TAG, "onPostExecute");
pd.dismiss();
}
@Override
protected void onPreExecute() {
pd.setMessage("Actualizando...");
pd.show();
}
@Override
protected void onProgressUpdate(Void... values) {
}
@Override
protected Boolean doInBackground(Void... params) {
webService();
tv2 = resultado.toString(); //Obtengo el string resultado del WebService en tv2
//Obtengo la hora actual
insertoEnBD();
// Inserto en base de datos (Si es que pase por el Web Service)
Boolean res = true;
return res;
}
}
Webservice的是Web服务的连接如的方法,而“InsertoBD”是,当我把数据导入数据库..感谢
我看不出有什么错在你的AsyncTask实现,如何你是否知道你的任务在进度条开始之前完成。根据你的描述,除了2秒的冻结,我会说这是我的期望从你的AsyncTask:进度条显示 - >任务快速完成 - >进度条被驳回。 – yorkw
因为我的UI是刷新和更改数据..后,我看到进度条开始.. –
我会建议注释掉doInBackground()中的所有代码,并简单地做一个Log.i(标签,“做某事”)看看UI刷新是否实际来自你的doInBackground()。通过这样做,您还可以检查Logcat以查看是否在onPreExecute()之后调用doInBackground()。我想你的代码中可能还有其他地方在主线程中执行同样繁重的任务,这解释了单击刷新按钮时2秒钟冻结。 – yorkw