gpt4 book ai didi

android - 如何使用 ViewModel 存储位图列表以便在生命周期变化中生存?

转载 作者:行者123 更新时间:2023-11-29 18:48:15 26 4
gpt4 key购买 nike

我正在尝试将位图列表存储到 List < Bitmap > 加载后>InputStream 使用以下代码。

URL url = new URL(img_url);
InputStream inputStream = url.openConnection().getInputStream();
if (inputStream != null) {
trailerPicBitmaps.add(BitmapFactory.decodeStream(inputStream));
}

所以,现在在使用 AsyncTaskLoader 加载所有图像后,我将其保存在 List < Bitmap < strong>> 位图列表。如何保存它以便保存配置更改。我使用了 onSaveInstanceState 但是当我导航到另一个应用程序时该应用程序崩溃了。

有没有办法使用 ViewModel 来做到这一点?

最佳答案

好的,所以你可以这样做:

首先是保存位图的地方 (viewModel)。

private val bitmapStore = MutableLiveData<List<Bitmap>>()

现在要获取它,您应该使用 (viewModel):

fun getBitmaps() = bitmapStore

onActivityCreated 的 fragment 中,例如setupUi 放置您的可观察对象:

viewModel.getBitmaps().observe(this, Observer { 
//show bitmaps somewhere
})

并将位图放置在您的 MutableLiveData (viewModel) 中:

fun updateBitmaps(bitmaps:List<Bitmap>){
bitmapStore.postValue(bitmaps)
}

如果放置后会有一些编辑(应该在将数据存储到 MutableLiveData 之前更改数据),您应该考虑使用 Transformations.switchMap

更新从服务器接收数据的示例(如果您想将其存储在数据库中,您应该检查空间和存储库模式)。

fun fetchBitmaps(){
apiServices.fetchBitmaps()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe({
updateBitmaps(it)
}, { throwable ->
//on error
})

}

关于android - 如何使用 ViewModel 存储位图列表以便在生命周期变化中生存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51361311/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com