android - AsyncTask ProgressDialog stopped, after callback -


this task:

public class gettask extends asynctask<string, void, jsonobject> {      // callback     private activity activity;     private asynctaskcompletelistener callback;      private apputils apputils;      private progressdialog dialog;     private string object;        public gettask(activity act){         this.activity = act;         this.callback = (asynctaskcompletelistener)act;     }      protected void onpreexecute() {         super.onpreexecute();          dialog = new progressdialog(activity);         dialog.settitle("load...");         dialog.setmessage("data...");         dialog.setcancelable(true);          dialog.setoncancellistener(new dialoginterface.oncancellistener() {              @override             public void oncancel(dialoginterface dialog) {                 cancel(false);              }         });          dialog.show();     }      protected jsonobject doinbackground(string... url) {          string link = url[0];         object = apputils.cutstringafter(link);          link = apputils.cutstringbefore(link);          return apputils.getjsondata(link);      }      protected void onpostexecute(jsonobject result) {         if (null != dialog && dialog.isshowing()) {             dialog.dismiss();         }         super.onpostexecute(result);         callback.ontaskcomplete(result, object);      }       @override         protected void oncancelled()         {             if (this.dialog != null) {                 this.dialog.dismiss();             }         } } 

ontaskcomplete call other procedure parse data:

    @override public void ontaskcomplete(jsonobject result, string object) {     try {         setdbdata(result, object);     } catch (jsonexception e) {         // todo auto-generated catch block         e.printstacktrace();     } } 

dialog dismissed after complete procedure setdbdata(result, object);, while works setdbdata, progressdialog freezes.

how close progressdialog before callback procedure, or prevent freeze him?

in oppostexecute() set ondismisslistener() on progressdialog , call call method ondismiss()

something this:-

dialog.setondismisslistener(new ondismisslistener() {      @override     public void ondismiss(dialoginterface dialog) {         callback.ontaskcomplete(result, object);     } }); 

hope helps.


Comments