문제가 있습니다. 나는 웹 서비스에 연결하여 데이터를 가져와 데이터베이스에 저장하는 asynctask를 가지고있다. 그게 다 잘 됐네. 하지만 문제가 생겼습니다. 웹 서비스를 수행 할 때 새로 고침을 클릭하면 진행 막대를 놓고 싶습니다.안드로이드 - Webservice AsyncTask가 느린 ProgressDialog
새로 고침을 실행하면 화면이 정지 된 후 2 초가 지나면 진행 표시 줄을 조금 누른 다음 사라지지만 진행 표시 줄이 시작되기 전에 실행이 완료됩니다. .. 덕분
여기 는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를는 웹 서비스의 conection에의 방법이다 AsyncTask를의 코드이며, i가 데이터베이스에 데이터를 입력 할 때 "InsertoBD는"
나는 당신의 AsyncTask를 구현에서 아무 잘못 표시되지 않습니다, 어떻게 진행률 표시 줄이 시작되기 전에 작업이 완료되었음을 알고 있습니까? 귀하의 설명에 따르면, 2 초 동결과는 별도로 AsyncTask : 진행률 표시 -> 작업 완료가 빠름 -> 진행률 표시 줄이 취소 된 것으로 예상됩니다. – yorkw
원인 내 UI가 새로 고쳐지고 데이터가 변경됩니다 .. 그리고 progressbar가 시작되는 것을 본 후에 .. –
doInBackground()의 모든 코드를 주석으로 처리하고 Log.i (TAG, "do something")를 수행하면됩니다. UI 새로 고침이 실제로 doInBackground()에서 발생하는지 확인하십시오. 이렇게하면 logcat에서 onPreExecute() 후에 doInBackground()가 호출되는지 확인할 수 있습니다. 나는 당신의 코드에서 메인 쓰레드에서 같은 무거운 작업을하는 다른 곳이있을 것이라고 생각한다. 새로 고침 버튼을 클릭 할 때 2 초 동결한다고 설명한다. – yorkw