Метод onUpdate не обновляет никакие данные в RemoteViews, кроме PendingIntent, поэтому, если он когда-либо вызывается, виджет вернется в состояние, определенное в R.layout.widget.
У вас есть код, который вызывает updateAppWidget после взаимодействия с пользователем?Это также может помочь.
Кроме того, если обновление встроено и не требует какого-либо пользовательского интерфейса, вам не нужно запускать действие, чтобы выполнить это обновление.Он более эффективен и не нарушит задний стек, если вместо этого PendingIntent предназначен для широковещательного приемника, используя PendingIntent.getBroadcast.Вы можете использовать тот же BroadcastReceiver, что и поставщик виджетов вашего приложения.Вам не нужен еще один.
Обновление: (Я не могу ответить ниже, потому что текст слишком длинный)
Я бы сделалФункция, как это, и вызвать его из вашей деятельности из onUpdate ().Вам нужно где-то сохранить текст , чтобы вы также могли передать его из onUpdate ().В противном случае он вернет текст по умолчанию в R.layout.widget.
void updateWidget(Context context, CharSequence text) {
RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.widget);
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);
remoteViews.setOnClickPendingIntent(R.id.ImageButton01, pendingIntent);
remoteViews.setTextViewText(R.id.ImageButton01, text);
AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
ComponentName thisWidget = new ComponentName(context, MemWidget.class);
appWidgetManager.updateAppWidget(thisWidget, remoteViews);
}