Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/207.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从线程启动android活动';这是内螺纹。_Java_Android_Multithreading - Fatal编程技术网

Java 从线程启动android活动';这是内螺纹。

Java 从线程启动android活动';这是内螺纹。,java,android,multithreading,Java,Android,Multithreading,此代码位于MainActivity类中 Thread thread1 = new Thread(new Runnable() { @Override public void run() { Thread thread2 = new Thread(new Runnable() { @Override

此代码位于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();

当我运行这段代码时,什么都没有发生

您不能使用其他线程处理UI或调用其他活动, 您只能从主UI线程执行此操作

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

运行其他线程意味着,您正在与主线程同时执行一些额外任务。

您不能使用其他线程在UI上工作或调用其他活动,
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);
};
您只能从主UI线程执行此操作

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

运行其他线程意味着,您正在与主线程同时执行一些额外任务。

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);
};

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);
};

我必须使用两级线程我必须使用两级线程