首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Kotlin的片段中的runOnUiThread()方法

使用Kotlin的片段中的runOnUiThread()方法
EN

Stack Overflow用户
提问于 2019-12-16 11:04:52
回答 3查看 8.4K关注 0票数 3

如何在runOnUiThread上使用fragment。如何破片完成呢?

下面是在活动中执行此操作的代码

代码语言:javascript
运行
复制
this@MainActivity.runOnUiThread(java.lang.Runnable {
    progressBar.visibility = View.GONE
})
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-12-16 11:06:56

如果要在片段中使用Activity上下文,则需要使用runOnUiThread()上下文。

示例代码

代码语言:javascript
运行
复制
  class MyFragment : Fragment() {

    override fun onCreateView(
        inflater: LayoutInflater, container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        // Inflate the layout for this fragment

        activity?.runOnUiThread {
            progressBar.visibility = View.GONE
        }
        return inflater.inflate(R.layout.fragment_layout, container, false)
    }


}

示例代码

代码语言:javascript
运行
复制
class DepositFragment : Fragment() {

    lateinit var rootView: View
    lateinit var mContext: Context

    override fun onAttach(context: Context) {
        super.onAttach(context)
        mContext = context
    }
    override fun onCreateView(
        inflater: LayoutInflater, container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        // Inflate the layout for this fragment
        (mContext as Activity).runOnUiThread { 

        }
        return inflater.inflate(R.layout.fragment_deposit, container, false)
    }
}
票数 5
EN

Stack Overflow用户

发布于 2019-12-16 11:11:22

runOnUiThread方法做了两件事。

  1. 它检查当前线程
  2. ,如果当前线程是主线程,那么它将完美地执行任务,否则它会将其提交给活动处理程序

我想,最好的解决办法是:

将新的处理程序explicitly

  • Post任务创建为新的处理程序

像这样:

代码语言:javascript
运行
复制
private val handler = Handler(Looper.getMainLooper())
...
handler.post {
...your task...
}

https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/app/Activity.java#6919

票数 1
EN

Stack Overflow用户

发布于 2019-12-17 17:33:29

这个问题对我没有任何意义,正如前面已经说过的,片段中的所有调用都将在main或UI线程上运行。没有必要为此显式调用@runOnUi螺纹。从工作线程更新视图时,需要将上下文切换到UI以更新视图。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59355360

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档