Necesito un poco de ayuda para actualizar mi interfaz de usuario de Runnable/Handler cada segundo. Estoy usando este código:actualización de Android ui desde el controlador cada segundo
Runnable runnable = new Runnable() {
@Override
public void run() {
handler.post(new Runnable() {
@Override
public void run() {
prBar.setProgress(myProgress);
y = (double) ((double) myProgress/ (double) RPCCommunicator.totalPackets)*100;
txtInfoSync1.setText(Integer.toString((int)y) + "%");
prBar.setMax(RPCCommunicator.totalPackets);
int tmp = totalBytesReceived - timerSaved;
Log.w("","totalBytesReceived : "+totalBytesReceived + " timerSaved : "+timerSaved);
Log.w("","tmp : "+tmp);
if (avgSpeedCalc.size() > 10)
{
avgSpeedCalc.remove(0);
}
avgSpeedCalc.add(tmp);
int x = 0;
for (int y=0;y<avgSpeedCalc.size();y++)
{
x += avgSpeedCalc.get(y);
Log.d("","x : "+x);
}
x = Math.round(x/avgSpeedCalc.size());
Log.e("","x : "+x);
timerSaved = totalBytesReceived;
txtSpeed.setText(Integer.toString(x));
}
});
}
};
he intentado con handler.postDelayed(runnable, 1000);
en onCreate()
, pero el ejecutable no se inicia. O incluso si lo intento con runnable.run();
, todavía no está funcionando.
¿Alguna idea de cómo puedo iniciar el ejecutable/manejador y actualizar la interfaz de usuario cada segundo?
y cómo puede dejar de que después de eso? Quiero decir que necesito que esto se ejecute solo cuando obtengo datos a través de Internet y quiero detener el ejecutable después de que termine la actividad o haga clic en el botón Cancelar. –
actualizó mi respuesta e introdujo una bandera – WarrenFaith
En realidad 'handler.removeCallbacks (ejecutable);' está haciendo lo mismo. –