'While' no puede completar sin lanzar una excepción – Android

Con este método estoy actualizando TextView cada segundo.

  private void UpdatingTime(final String endTime, final long diffInDays) { new Thread(new Runnable() { @Override public void run() { while (true) { try { Thread.sleep(ONE_SECOND); mHandler.post(new Runnable() { @Override public void run() { // Updating time every second long diffInHours = Methodes.diffInHours(endTime, diffInDays); long diffInMinutes = Methodes.diffInMinutes(endTime, diffInDays, diffInHours); long diffInSeconds = Methodes.diffInSeconds(endTime, diffInDays, diffInHours, diffInMinutes); tvTime2.setText(addZeroInFront(diffInHours) + ":" + addZeroInFront(diffInMinutes) + ":" + addZeroInFront(diffInSeconds)); } private String addZeroInFront(long diffInHours) { String s = "" + diffInHours; if (s.length() == 1) { String temp = s; s = "0" + temp; } return s; } }); } catch (Exception e) { e.printStackTrace(); } } } }).start(); } } 

Este método funciona perfectamente. Pero recibí esta advertencia:

'while' no se puede completar sin lanzar una excepción.

Informes para, while, o do declaraciones que sólo pueden salir lanzando una excepción. Aunque tales declaraciones pueden ser correctas, a menudo son un síntoma de errores de codificación.

Odio las advertencias y quiero arreglarlo. ¿Cómo puedo solucionar esta advertencia, o hay una mejor solución para este bucle infinito …?

    4 Solutions collect form web for “'While' no puede completar sin lanzar una excepción – Android”

    Esta advertencia es un falso positivo; debe ignorarlo.

    Por lo general, un bucle infinito es un signo de un error en alguna parte; en tu código, un bucle infinito es exactamente lo que quieres.

    Probablemente utilice Android Studio o IntelliJ.

    Si es así, puede agregar esto por encima de su método que contiene el bucle infinito para suprimir las advertencias:

     @SuppressWarnings("InfiniteLoopStatement") 

    O agregue este comentario "mágico" sobre la declaración:

     //noinspection InfiniteLoopStatement 

    Esto le dirá al IDE que esto está bien.

    De manera más general, cuando obtenga una advertencia positiva falsa, haga Alt+Enter y haga lo que se muestra en la captura de pantalla de abajo (seleccione la clase sólo si su clase está llena de positivo falso, para la misma advertencia)

    suprimir la imagen de advertencia

    Más información aquí en Jetbrains

    Si desea que se dispare cada segundo, puede seguir esta metodología, donde está seguro de que eliminará la devolución de llamada más tarde cuando salga. Esto se llama cada segundo hasta que se termine con la actividad. Usted podría incluso quitar las devoluciones de llamada más temprano si usted desea en el ciclo de vida tal como dentro onPause () o onStop () si así lo desea.

     Handler handler = new Handler(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); handler.post(updateTime); } @Override protected void onDestroy() { super.onDestroy(); handler.removeCallbacks(updateTime); } private final Runnable updateTime = new Runnable() { public void run() { try { // Updating time every second long diffInHours = Methodes.diffInHours(endTime, diffInDays); long diffInMinutes = Methodes.diffInMinutes(endTime, diffInDays, diffInHours); long diffInSeconds = Methodes.diffInSeconds(endTime, diffInDays, diffInHours, diffInMinutes); tvTime2.setText(addZeroInFront(diffInHours) + ":" + addZeroInFront(diffInMinutes) + ":" + addZeroInFront(diffInSeconds)); handler.postDelayed(this, 1000); } catch (Exception e) { e.printStackTrace(); } } private String addZeroInFront(long diffInHours) { String s = "" + diffInHours; if (s.length() == 1) { String temp = s; s = "0" + temp; } return s; } }; 

    Probablemente recibió esta advertencia con IntelliJ IDEA, ¿verdad?

    Como los otros ya mencionados, esta advertencia generalmente puede ser ignorada.

    Si desea desactivarla , abra Configuración y vaya a Editor> Inspecciones y busque la Infinite loop statement . Simplemente desmarque la casilla y ya está.

    Y en general , simplemente puede colocar su cursor de texto sobre una advertencia que desee inhabilitar y presione Alt + Intro , luego haga clic en el campo de información de inspección y haga clic en Deshabilitar inspección .

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.