我在我的应用程序中使用了一个工作线程,所以我必须知道哪些代码可以从工作线程中运行,哪些代码需要在UI线程上运行。
在Android文档中,可以找到以下提示:
因此,您不能从工作线程操作UI -必须从UI线程对用户界面进行所有操作。..。但是,请注意,您不能从UI线程或“主”线程以外的任何线程更新UI。
(来源)
但是,“对用户界面的操作”实际上意味着什么,通常并不像看起来那么清楚。当然,很明显,您不能隐藏视图、操作按钮文本、添加列表视图条目等等。
但是,例如,如何从工作线程调用setRequestedOrientation()呢?这是允许的,还是属于UI操作的,因此必须从UI线程中调用?有什么方法可以告诉我,或者我是否应该在有疑问的时候在UI线程上安全地运行代码?
发布于 2018-04-04 12:40:06
一般来说,您应该从API文档中获得指导。例如,Activity.onCreate()明确声明:
必须从应用程序的主线程调用此方法。
对于提供给Activity.setRequestedOrientation()的示例,没有明确声明应该在特定线程上调用该方法。通常,如果关心线程处理,文档就会声明这一点。
如果您希望确定,那么您也调用了Activity.runOnUiThread()
https://stackoverflow.com/questions/49650609
复制相似问题