Я использую WeakReference, который глобально определен в моем классе, теперь я запустил AsyncTask для создания растрового изображения, как я могу присвоить значение этого сгенерированного растрового изображения глобальному объекту WeakReference, ниже приведен фрагмент кода
private WeakReference<Bitmap> bitmapLogo = null; // Global object defined as globally in class
.....
.....
// Execute asyncTask
new GenerateLogoAndShow(AppDatabase.getInstance(getActivity()), bindingPreview, bitmapLogo).execute();
....
....
private static class GenerateLogoAndShow extends AsyncTask<Void, WeakReference<Bitmap>, WeakReference<Bitmap>> {
private AppDatabase appDatabase;
private FragmentPreviewBinding bindingPreview;
private WeakReference<Bitmap> bitmapLogo;
GenerateLogoAndShow(AppDatabase appDatabase, FragmentPrintPreviewBinding binding, WeakReference<Bitmap> bitmapLogo) {
this.appDatabase = appDatabase;
this.bindingPreview = binding;
this.bitmapLogo = bitmapLogo;
}
@Override
protected WeakReference<Bitmap> doInBackground(Void... voids) {
try {
byte[] bytes = _appDatabase.ImageDao().getLogo();
return new WeakReference<>(BitmapFactory.decodeByteArray(bytes, 0, bytes.length));
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
@Override
protected void onPostExecute(WeakReference<Bitmap> bitmap) {
super.onPostExecute(bitmap);
if (bindingPreview != null) {
try {
bitmapLogo = bitmap;
if (bitmap.get() != null) {
bindingPreview.imgLogo.setImageBitmap(bitmap.get());
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
Как и в asyncTask, я создал переданную ссылку bitmapLo go и присвоенное значение в onPostExecute. Но после полного выполнения asyncTask значение bitmapLo go является нулевым