startActivty在另一个线程中

Gam*_*Gam 5 android

我对android很新.希望这不是一个愚蠢的问题.

protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    new Thread(new Runnable()
    {
        public void run()
        {
            Intent intent = new Intent(MainActivity.this, SecondActivity.class);
            startActivity(intent);
        }
    }).start();
}
Run Code Online (Sandbox Code Playgroud)

问题:为什么这有效?从辅助线程调用startActivity是正常的吗?

我认为所有与UI相关的事情都必须在UI线程中完成.

Dou*_*son 3

startActivity不是立即的。它安排活动的启动在主线程上的下一个可用周期运行,因此您可以从任何地方调用它。(但这并不一定意味着这是一个好主意。)

除了主线程之外,您不应该触摸视图层次结构。那是另一个问题了。