如何显示 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() }
上 运行
我有一种方法可以收集大量数据,这会降低我的应用程序(所有调用日志)的速度。我想要实现的是在调用这个方法之前,它显示一个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() }