如何在Activity中实例化对象并等待其完成加载

时间:2019-01-29 08:15:10

标签: java android

我有一个活动DisplayResults,该活动从我的MainActivity开始。在DisplayResultsActivity中,它在其onCreate()函数中创建自定义类ProductFinder的对象。在ProductFinder的构造函数中,有一个while循环需要大约10秒钟的时间来执行。

我的问题是,当我从DisplayResult开始MainActivity时,整个屏幕在while循环期间变黑,然后最终DisplayResults活动在屏幕上显示了所有内容

我想要的是正常绘制DisplayResults活动,然后等待ProductFinder类中的循环完成其操作,而不会冻结整个UI。在循环运行时,在DisplayResults的中间放置一个加载圈会很好。

执行此操作的正确方法是什么?我知道线程中需要包含某些内容,但是我不确定将加载循环放入哪个类以及将哪些代码放入线程中。

1 个答案:

答案 0 :(得分:0)

这完全取决于要求

如上所述,您可以使用AsyncTask来完成这项工作,但是可能会遇到诸如内存泄漏和处理配置更改(例如设备旋转)之类的问题。

第二个选择是使用AsyncTaskLoader,它将使您能够处理配置更改(Difference between AsyncTask to AsyncTaskLoader by Google)。

第三种方法和较新的方法是使用背景线程来订阅ViewModel,并在其上附加MutableLiveData,并通过后台线程传递状态值(您也可以使用AsyncTask来管理状态)

最后一个选择(也许是第一个)是使用RxAndroid