multithreading - Updating UI on Android Widget -
i have widget button , progress bar. basically, when button pressed progress bar starts fill up. has been relatively simple - seems lag progress bar fills up. i've got running in separate thread, still - whole systems seems take strain.
here's setup:
pdateprogressbar = new runnable() { @override public void run() { if (panicstatus) { // start progress bar // @ end ( < 100) progress += 0.33f; remoteviews.setprogressbar(r.id.widgetprogress, 100, (int)progress, false); // update ui thiswidget = new componentname(main, widgetprovider.class); appwidgetmanager manager = appwidgetmanager.getinstance(main); manager.updateappwidget(thiswidget, remoteviews); if (progress < 100) { mhandler.postdelayed(this, 10); } else { mhandler.removecallbacks(updateprogressbar); mhandler = null; } } else { mhandler.removecallbacks(this); mhandler = null; } } }; runnable update = new runnable() { @override public void run() { if (panicstatus) { looper.prepare(); log.d("widget", "creating new handler..."); mhandler = new handler(); log.d("widget", "starting runnable updateprogressbar"); mhandler.postdelayed(updateprogressbar, 10); looper.loop(); } } }; if (!panicstatus) { // panic pressed, allow time cancel log.d("widget", "panic"); remoteviews.settextviewtext(r.id.widget_panic_button, "cancel"); panicstatus = true; progress = 0; // start new handler // update progress bar new thread(update).start(); } else { // cancel pressed, cancel pending panic log.d("widget", "cancel"); remoteviews.settextviewtext(r.id.widget_panic_button, "panic"); panicstatus = false; progress = 0; remoteviews.setprogressbar(r.id.widgetprogress, 100, 0, false); } any ideas how can going smoothly?
thanks
Comments
Post a Comment