Sziasztok!
Van egy appwidget-em, ahol az onReceive metódusban intent.getAction() alapján végzek el különböző dolgokat. Az egyiknél kiíratok egy toast üzenetet, eddig működik is. Amit csinálni akarok, hogy a toast megjelenésével egyidőben lekérem a RemoteViews-t, módosítom, AppWidgetManager-rel frissítem, várok 5 mp-et (Thread.sleep), majd visszaállítom az eredeti állapotot. A widget frissül is, viszont a toast csak azután jelenik meg, hogy ez az 5 mp letelt, illetve csak megjelenne, mert a toast duration-je "elindul" amikor megjelenítem, de csak azután jelenne meg, amikor az 5mp után megint frissül a widget. Ha 6 mp-et adok meg duration-nek a toastnak, akkor ebben az esetben 1 mp-ig látszik. Mi lehet az oka?
Van egy appwidget-em, ahol az onReceive metódusban intent.getAction() alapján végzek el különböző dolgokat. Az egyiknél kiíratok egy toast üzenetet, eddig működik is. Amit csinálni akarok, hogy a toast megjelenésével egyidőben lekérem a RemoteViews-t, módosítom, AppWidgetManager-rel frissítem, várok 5 mp-et (Thread.sleep), majd visszaállítom az eredeti állapotot. A widget frissül is, viszont a toast csak azután jelenik meg, hogy ez az 5 mp letelt, illetve csak megjelenne, mert a toast duration-je "elindul" amikor megjelenítem, de csak azután jelenne meg, amikor az 5mp után megint frissül a widget. Ha 6 mp-et adok meg duration-nek a toastnak, akkor ebben az esetben 1 mp-ig látszik. Mi lehet az oka?
Toast.makeText(...).show; RemoteViews updateViews = new RemoteViews(context.getPackageName(), R.layout.main_layout); updateViews.setImageViewResource(...); ComponentName me = new ComponentName(context, Valami.class); AppWidgetManager mgr = AppWidgetManager.getInstance(context); mgr.updateAppWidget(me, updateViews); try { Thread.sleep(5000); } catch ... updateViews.setImageViewResource(...); mgr.updateAppWidget(me, updateViews);
Page
viewed times
#trackbackRdf ($trackbackUtils.getContentIdentifier($page) $page.title $trackbackUtils.getPingUrl($page))
3 Comments
Péntek Jüzsef
Auth Gábor
A másik dolog, hogy a Thread.sleep() valószínűleg megállítja a GUI szálat is, tehát nem fog történni semmi, hacsak nem külön szálon futtatod.
Péntek Jüzsef
Ha a sleep-et leveszem mondjuk 2 mp-re, akkor 2 mp után jelenik meg a Toast, és nem a sleep állítja meg a szálat, kipróbáltam, hogy csak egy Thread.sleep(5000) volt, és ment rendesen a Toast. És próbáltam külön szálban is futtatni, ugyanaz volt az eredmény, mint alapesetben.