studio programacion para móviles libro edición desarrollo desarrollar curso aprende aplicaciones android android-widget widget textview

para - manual de programacion android pdf



Manera simple de actualizar Widget TextView periódicamente (3)

Tengo un widget con dos TextView que muestra la hora y la fecha.

Simplemente quiero que este lote de código suceda cada segundo:

views.setOnClickPendingIntent(R.id.rl, pendingIntent); java.util.Date noteTS = Calendar.getInstance().getTime(); String time = "kk:mm"; String date = "dd MMMMM yyyy"; views.setTextViewText(R.id.tvTime, DateFormat.format(time, noteTS)); views.setTextViewText(R.id.tvDate, DateFormat.format(date, noteTS));

Así que necesito una manera simple de actualizar TextView periódicamente en el widget para que el tiempo cambie más que los 30 minutos estándar. Gracias


Otra posibilidad sería el uso de las clases Timer y TimerTask . Puede usar el Timer.schedule(TimerTask task, long delay, long period) para lograr lo que necesita.

Tenga en cuenta que no puede acceder al hilo de UI desde un TimerTask, por lo que el método Handler.postDelayed() podría ser una mejor Handler.postDelayed() si ya tiene la intención de utilizar un Handler con la clase Timer . Existen otros métodos para acceder al hilo de la interfaz de usuario con TimerTask , como Activity.runOnUiThread() .


puede crear Handler y Runnable , y luego dejar que Handler reinicie su Runnable en el intervalo especificado. su programa podría verse así:

private Handler mHandler = new Handler(); @Override public void onResume() { super.onResume(); mHandler.removeCallbacks(mUpdateClockTask); mHandler.postDelayed(mUpdateCLockTask, 100); } @Override public void onPause() { super.onPause(); mHandler.removeCallbacks(mUpdateClockTask); } private Runnable mUpdateClockTask = new Runnable() { public void run() { updateClock(); mHandler.postDelayed(mUpdateClockTask, 1000); } };

y dentro de updateClock() haces todas tus actualizaciones de UI. Supongo que todo esto sucede dentro de la Activity con las onPause()/onResume() apropiadas.