假设我的活动ui-thread在某个时刻产生了一个单独的线程。新线程是否可以安全地启动Intent以启动新活动?
由于
答案 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]