Загрузить изображение с Glide для AppWidget
Я работаю над своим первым виджетом приложения. Все хорошо, кроме одной вещи. Я не могу выяснить, как я могу загрузить изображение в ImageView в методе getViewAt () RemoteViewsFactroy с Glide. Я всегда получаю сообщение об ошибке, потому что мне приходится сталкиваться с (AppWidgetTarget) в MainThread, но я не могу вызвать новый обработчик (Looper.getMainLooper ()) из RemoteViewsFactory.
1 ответ
Glide поддерживает это, предоставляя класс AppWidgetTarget.
При обновлении вашего виджета в onUpdate()
, вы создаете новый AppWidgetTarget, передаете ему RemoteViews
object, id вашего изображения и appwidgetId, а затем вызывают glide почти так же, как и для изображения в вашем приложении.
appWidgetTarget = new AppWidgetTarget( context, rv, R.id.custom_view_image, appWidgetIds );
Glide
.with( context.getApplicationContext() ) // safer!
.load( GlideExampleActivity.eatFoodyImages[3] )
.asBitmap()
.into( appWidgetTarget );
Приведенный выше пример кода взят из этого замечательного набора учебных пособий по планированию. Учебные руководства охватывают многие практические аспекты использования скольжения.
Аналогично, целевой класс NotificationTarget также предоставляется glide - он решает ту же проблему, но для уведомлений вместо appWidgets.