Lazyload изображение в appwidget
Есть ли способ лениво загрузить изображение из интернета в удаленное представление.
remoteView.setImageViewBitmap(R.id.image, UrlUtils.loadBitmap(bitmapUrl));
Я использую эту функцию, но она блокирует мой виджет в течение небольшого времени.
public static Bitmap loadBitmap(String url) {
Bitmap bitmap = null;
InputStream in = null;
BufferedOutputStream out = null;
try {
in = new BufferedInputStream(getPageInputStream(url));
final ByteArrayOutputStream dataStream = new ByteArrayOutputStream();
out = new BufferedOutputStream(dataStream);
Utils.copy(in, out);
out.flush();
final byte[] data = dataStream.toByteArray();
BitmapFactory.Options options = new BitmapFactory.Options();
// options.inSampleSize = 1;
bitmap = BitmapFactory.decodeByteArray(data, 0, data.length,
options);
in.close();
out.close();
} catch (IOException e) {
e.printStackTrace();
}
return bitmap;
}
Спасибо
2 ответа
Абсолютно
- Нарисуйте свой виджет обычным способом, все текстовые части и т. Д. Рядом с изображением
- Создайте сервис, который будет загружать изображение. Вот хороший учебник, который включает в себя, как создать и вызвать сервис из appwidget
- После обновления вашего виджета позвоните в сервис. Передайте идентификатор виджета и URL изображения
- Загрузите изображение из кэша или удаленно в ваш сервис и обновите ваш виджет снова. Вуаля, у вас есть это сейчас
Попробуйте Android-запрос lib для загрузки lazyload.