Child pages
  • Toast + időzítés appwidget onReceive-ben
Skip to end of metadata
Go to start of metadata
 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?

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
  • No labels

3 Comments

  1.  Kicsit összekuszálódott a beillesztés, de remélem érthető.
  2. A Toast-nál a duration nem egy tetszőleges szám, hanem előredefiniált konstans, vagy Toast.LENGTH_LONG vagy Toast.LENGTH_SHORT lehet az értéke. :)

    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.
  3.  Jaja, mondjuk gyanús is volt hogy int a duration paraméter :)

    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.