我正在开发一个项目,我们决定实现MVVM而不是传统的MVC。我正在寻找在这种情况下设置ProgressDialog的正确方法。
通常,您在自己的异步任务中有一个ProgressDialog,在doInBackground()调用期间,您将获取您需要获取的任何数据。但是,由于我们正在运行MVVM,我正在等待VM返回数据以使用。
更新视图也许我只是很难实现我最初认为是正确的解决方案,但我试图让进度对话异步任务等到VM返回值。类似于以下内容
// Listener that connects VM and View
onPropertyChange() {
// Update UI
...
flag = true;
}
// Within myAsyncTask
onPreExecute() {
// Set up ProgressDialog
}
doInBackground() {
while (!flag) { }
}
onPostExecute() {
// Dimiss ProgressDialog
}
我认为这是一个混乱的解决方案,因此改为以下
onCreate() {
// Inject VM and perform super.OnCreate()
...
// Set up ProgressDialog
}
onPropertyChange() {
// Update UI and dismiss ProgressDialog
}
在将ProgressDialog放在自己的AsyncTask上而不是主线程上时,是否有更好的方法来实现此功能?