2017-01-21 3 views
0

Этот код находится внутри класса MainActivity.запуск активности андроида из внутренней резьбы потока.

Thread thread1 = new Thread(new Runnable() { 
      @Override 
      public void run() { 
        Thread thread2 = new Thread(new Runnable() { 
          @Override 
          public void run() { 

          Intent i = new Intent(getApplicationContext(), NextActivity.class); 
          startActivity(i); 
          } 
         }); 
        thread2.start(); 


      } 
      }); 
      thread1.start(); 

Когда я запускаю этот код, ничего не происходит.

+0

Мне нужно использовать два уровня резьбы – Solomon

ответ

1

startActivity должен быть запущен в основном потоке, поэтому, если вам нужно запустить его с thread2, я бы опубликовал его для запуска в основном потоке.

Thread thread2 = new Thread(new Runnable() { 

    @Override 
    public void run() { 

    Handler mainHandler = new Handler(context.getMainLooper()); 
    Runnable myRunnable = new Runnable() { 
     @Override 
     public void run() { 
     Intent i = new Intent(context, NextActivity.class); 
     startActivity(i); 
    } 
    mainHandler.post(myRunnable); 
}; 
1

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

Intent i = new Intent(getApplicationContext(), NextActivity.class); 
          startActivity(i); 

Выполнение других потоков означает, что вы выполняете дополнительные задания одновременно с основной нитью.

Смежные вопросы