У меня есть следующий код:
private class ImageCompressTask extends AsyncTask<Uri, Integer, byte[]> {
@Override
protected byte[] doInBackground(Uri... uris) {
Bitmap bitmap = ImagePicker.getBitmap(getContentResolver(),uris[0]);
if (bitmap == null) {
return null;
}
Log.d(this.getClass().getName(), "doInBackground: MBs before compression: " + (double) bitmap.getByteCount() / 1e6);
byte[] bytes = getBytesFromBitmap(bitmap, 80);
Log.d(this.getClass().getName(), "doInBackground: MBs after compression: " + (double) bytes.length / 1e6);
return bytes;
}
@Override
protected void onPostExecute(byte[] bytes) {
super.onPostExecute(bytes);
uploadData(bytes);
}
private byte[] getBytesFromBitmap(Bitmap bitmap, int quality) {
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, quality, stream);
return stream.toByteArray();
}
}
Он в основном загрузил изображение в хранилище и новый документ в базу данных (firebase). Я получаю предупреждение:
This `AsyncTask` class should be static or leaks might occur.
Пытался просмотреть предыдущие темы, но не нашел там решения. Если я сделаю класс stati c, я не смогу вызвать getContentResolver()
и uploadData(bytes)
. Как решить?