如何显示 ProgressDialog 并在完成工作后将其关闭

How to display a ProgressDialog and dismiss it when finished doing a job

我有一种方法可以收集大量数据,这会降低我的应用程序(所有调用日志)的速度。我想要实现的是在调用这个方法之前,它显示一个ProgressDialog,这个我已经实现了。我无法做到的是,当该方法获取所有数据并将其显示在屏幕上时,它会关闭它。

对于此方法,我使用 Anko 库来调用异步方法。

这是我的代码:

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    binding = MyActivityBinding.inflate(layoutInflater)
    setContentView(binding.root)

    var pd = ProgressDialog(this)
    pd.show()
    pd.setContentView(R.layout.myCustomLoading)
    pd.window?.setBackgroundDrawableResource(R.color.transparent)
    pd.setCancelable(false)

    doAsync { //Anko library

        val myList = getData()  //This methood return a List<Model>
        binding.list.adapter = MyAdapter(this@MyActivity, myList)

    }

    pd.dismiss()
}

我在这段代码中遇到的问题是 ProgressDialog 没有显示,要在 RecyclerView 的屏幕上显示数据,我必须触摸屏幕或拖动它,这种情况很少见。

pd.dismiss() 移动到异步块的底部。

但不要忘记在 UI 线程 activity.runOnUiThread { pd.dismiss() }

上 运行