2017-01-21 9 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

私は2つのレベルのスレッドを使用する必要があります – 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

UIでの作業や他のアクティビティの呼び出しに他のスレッドを使用することはできません。 メインUIスレッドからのみ実行できます。

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

他のスレッドを実行するということは、メインスレッドと同時にいくつかの追加タスクを実行していることを意味します。

関連する問題