片段是否在与创建它们的活动不同的线程上运行?
那么假设我有一个同步调用Web服务的片段,它是否在从服务器检索数据时阻止了我的主要活动?
答案 0 :(得分:10)
如上所述here Android UI不是线程安全的,因此片段在与活动相同的主线程中运行。因此,最好将您的Web服务调用移动到AsyncTask中,否则您将面临冻结应用程序的风险。
答案 1 :(得分:6)
我认为他们是在UI线程上,因为Android在UI线程上保持UI操作这么大。调用commit()
时,这些事务肯定在UI线程上执行,如stated in the documentation。
好像你可以用
轻松测试它Log.d("Fragment", "thread = " + Thread.currentThread().getName());
如果它在线程'main'上,则它在UI线程上。