如何使用MVVM架构正确处理ProgressDialog

时间:2017-01-27 18:49:15

标签: android mvvm android-asynctask progressdialog

我正在开发一个项目,我们决定实现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上而不是主线程上时,是否有更好的方法来实现此功能?

0 个答案:

没有答案