Внедрение цикла while в android

Я не могу понять реализацию цикла while в android.

Всякий раз, когда я реализую цикл while внутри onCreate() (код, показанный ниже)

 public void onCreate(Bundle icicle) { super.onCreate(icicle); setContentView(R.layout.main); TextView=(TextView)findViewById(R.id.TextView); while (testByte == 0) updateAuto(); } 

Ничто не загружается, и программа через некоторое время переходит в «зависающее» состояние, и я не могу понять, почему. Testbyte выглядит следующим образом:

 byte testByte == 0; 

И updateAuto() должен обновить код за 1 секунду и отобразить внутри части textView. Я использовал setText внутри updateAuto (), как показано ниже, и все работает нормально, но как только я реализую цикл while, который я вижу, это черный экран, а затем возможность принудительно закрыть через несколько секунд из-за того, что он «не отвечает», ,

 TextView.setText(updateWords); 

Я изменил его на формат кнопки (это означает, что я должен нажать кнопку, чтобы обновить себя на данный момент), но я хочу, чтобы он обновил себя, а не вручную щелкнул по нему.

Я внедряю цикл while неправильно?

Я также попытался вызвать цикл while в отдельной функции, но он все еще дает мне черный экран небытия.

Я читал кое-что о службе Handler … что он делает? Может ли служба Handler обновлять мой TextView более безопасным или эффективным способом?

Большое спасибо, если кто-нибудь даст некоторые указания на то, что я должен сделать по этому поводу.

    Подцепите себя. И постарайтесь внимательно следить, это будет бесценно, как dev.

    Хотя циклы действительно должны быть реализованы только в отдельном потоке. Отдельный поток похож на второй процесс, запущенный в вашем приложении. Причина, по которой это принудительное закрытие, заключается в том, что вы запустили цикл в потоке пользовательского интерфейса, что делает пользовательский интерфейс неспособным ничего делать, кроме как пройти через этот цикл. Вы должны поместить этот цикл во второй поток, чтобы поток пользовательского интерфейса можно было свободно запускать. При потоковой передаче вы не можете обновлять графический интерфейс, если вы не находитесь в потоке пользовательского интерфейса. Вот как это было бы сделано в этом случае.

    Во-первых, вы создаете Runnable, который будет содержать код, который петли в его методе запуска. В этом Runnable вам нужно будет сделать второй Runnable, который отправляется в поток пользовательского интерфейса. Например:

      TextView myTextView = (TextView) findViewById(R.id.myTextView); //grab your tv Runnable myRunnable = new Runnable() { @Override public void run() { while (testByte == 0) { Thread.sleep(1000); // Waits for 1 second (1000 milliseconds) String updateWords = updateAuto(); // make updateAuto() return a string myTextView.post(new Runnable() { @Override public void run() { myTextView.setText(updateWords); }); } } }; 

    Затем просто создайте свой поток с помощью Runnable и запустите его.

      Thread myThread = new Thread(myRunnable); myThread.start(); 

    Теперь вы должны видеть, что ваш цикл приложений не закрывается.