假设我的活动UI线程在某个时刻生成了一个单独的线程。这个新线程是否可以安全地触发意图(Intent)以启动一个新的活动(activity)呢?
谢谢。
假设我的活动UI线程在某个时刻生成了一个单独的线程。这个新线程是否可以安全地触发意图(Intent)以启动一个新的活动(activity)呢?
谢谢。
我可能错了,但是我认为startActivity()
在内部在UI线程中执行。所以说,是安全的。
如果想要百分之百确定,可以在你的活动的runOnUiThread()
中作为一个Runnable
来调用你的startActivity()
。
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);
startActivity()
的源代码,确实在主线程上运行,所以你可以放心从后台调用它。 - Jason CrosbystartActivityForResult
后,我遇到了java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
的错误。您需要在UI线程中运行此代码,否则在某些糟糕的实现中可能会导致崩溃。 - Enyby