从线程的内部线程启动android活动。

时间:2017-01-21 20:40:06

标签: java android multithreading

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

当我运行此代码时,没有任何事情发生。

2 个答案:

答案 0 :(得分:1)

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

  UPDATE arak
  SET ara = case when ID = 1 then '$konyha' 
                 when ID = 2 then '$kugli'
                 when ID = 3 then '$ronk' 
            else ara
            end 

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

答案 1 :(得分: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);
};