从非ui线程启动和活动是否安全?

时间:2010-07-21 02:17:09

标签: android

假设我的活动ui-thread在某个时刻产生了一个单独的线程。新线程是否可以安全地启动Intent以启动新活动?

由于

3 个答案:

答案 0 :(得分:10)

我可能错了,但我认为startActivity()在UI线程内部执行。所以是的,它应该是安全的。

如果您想100%确定,请在活动的startActivity()中以runOnUiThread()的身份调用Runnable

答案 1 :(得分:6)

startActivityForResult()的前几行(由所有startActivity()变体使用)表明它没问题:

public void startActivityForResult(Intent intent, int requestCode, Bundle options) {
    if (mParent == null) {
        Instrumentation.ActivityResult ar =
            mInstrumentation.execStartActivity(
                this, mMainThread.getApplicationThread(), mToken, this,
                intent, requestCode, options);

答案 2 :(得分:0)

我做了一个实验:   - 从非ui线程开始活动,在onCreate()中放置一个从1到100的循环,我在那里打印线程名称Thread.currentThread()   - 在非ui线程中活动开始后立即进行相同的循环

输出同时显示它们的名称为Thread [AsyncTask#1,5,main]和Thread [main,5,main]