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
Post a Comment