Почему эта тема не работает?

android multithreading

825 просмотра

1 ответ

Я написал этот код, чтобы попробовать темы на Android, но он не работает.

   @Override
   public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    Thread t = new Thread() {
            @Override public void run() {
                            int i = 0;
                while(true) {
                                 i += 5;
                                 if(i == 1000000)
                                       break;
                            }
            }
        };
    t.run();
   }

У меня есть некоторый графический интерфейс, и когда поток работает (я <1000000), графический интерфейс зависает. Но когда поток завершен (я == 1000000) все работает нормально. В чем дело?

// Извините за мой английский

Автор: micnyk Источник Размещён: 12.11.2019 09:19

Ответы (1)


6 плюса

Решение

Вы звоните, t.run()что означает, что вы выполняете весь код в потоке пользовательского интерфейса без запуска нового потока.

Вы должны вызвать, t.start()который вместо этого запустит новый поток и выполнит код в runметоде в этом новом потоке.

(Я бы также рекомендовал внедрить Runnableи затем передать Runnableновый Threadконструктор, а не переопределять run, просто для разделения интересов. Здесь это не изменит поведение, но это более чистый способ думать об этом, IMO.)

Автор: Jon Skeet Размещён: 11.12.2010 08:59
Вопросы из категории :
32x32