Tôi đã viết một AppWidget hiển thị một số dữ liệu trong một ListView từ một ContentProvider, nhưng tôi gặp khó khăn khi cập nhật nó. Khi tôi lần đầu tiên tạo ra các widget nó được dân cư chính xác, nhưng sau khi PendingIntent của AlarmManager đến, không có cập nhật nào xảy ra trên ListView. Dưới đây là các mã:listviewget appwidget android không cập nhật
Intent update = new Intent(context, MenuWidgetProvider.class);
update.setAction(AppWidgetManager.ACTION_APPWIDGET_UPDATE);
update.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, appWidgetIds);
PendingIntent pIUpdate = PendingIntent.getBroadcast(context, 0, update, 0);
((AlarmManager) context.getSystemService(Context.ALARM_SERVICE)).
set(AlarmManager.RTC, nextTime.toMillis(false), pIUpdate);
Log.d(TAG, "updating: " + dmt.mealName);
for (int i = 0; i < appWidgetIds.length; ++i) {
int widgetId = appWidgetIds[i];
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget_menu);
// meal name
views.setTextViewText(R.id.widget_locname, prefs.getString(PREF_WIDGET_LOCNAME, ""));
// adapter
Intent adapter = new Intent(context, MenuWidgetAdapterService.class);
adapter.putExtra(EXTRA_LOCATIONID, prefs.getInt(PREF_WIDGET_LOCID, -1));
adapter.putExtra(EXTRA_MEALNAME, dmt.mealName);
adapter.putExtra(EXTRA_DATE, dmt.date.toString());
views.setRemoteAdapter(R.id.widget_list, adapter);
// update
manager.updateAppWidget(widgetId, views);
}
super.onUpdate(context, manager, appWidgetIds);
Điều lạ là, khi cập nhật xảy ra,() phương pháp onUpdate chạy - Tôi thấy đầu ra từ các cuộc gọi Log.d - nhưng không có cuộc gọi đến onDataSetChanged() trong RemoteViewsFactory của tôi. Ngay cả khi tôi gọi notifyAppWidgetViewDataChanged, không có hiệu lực.
Cảm ơn! Điều này làm việc cho tôi. – buntwoi
Kỹ thuật này hoạt động nhưng khi tôi ghi nhớ tiểu sử của tiện ích, mức tiêu thụ bộ nhớ tăng lên. Tôi đặt báo thức khoảng một phút cho mục đích gỡ lỗi/lược tả. –
Vấn đề này đã đẩy tôi lên tường. Bạn đã cứu ngày của tôi. Làm thế nào bạn đi qua giải pháp này; chỉ tò mò thôi. Cảm ơn Prateek. –