RemoteViewsFactory → AppWidgetProvider
RemoteViewsFactory AppWidgetProvider , . :
Intent intent = new Intent(ACTION_PROGRESS_OFF);
intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, mAppWidgetId);
LocalBroadcastManager.getInstance(mContext).sendBroadcast(intent);
AppWidgetProvider :
@Override
public void onReceive(final Context context, final Intent intent) {
final String action = intent.getAction();
if (ACTION_PROGRESS_OFF.equals(action)) {
, :
<receiver
android:name="...">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
<action android:name="myPackage.ACTION_PROGRESS_OFF" />
</intent-filter>
<meta-data ... />
</receiver>
AppWidgetProvider → RemoteViewsFactory
RemoteViewsFactory (, , , ) - , RemoteViewsAdapter:
Intent intentRVService = new Intent(context, RemoteViewsService.class);
intentRVService.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
intentRVService.putExtra("HELLO", "WORLD");
intentRVService.setData(Uri.parse(intentRVService.toUri(Intent.URI_INTENT_SCHEME)));
rv.setRemoteAdapter(appWidgetId, R.id.my_list, intentRVService);
rv.setEmptyView(R.id.my_list, android.R.id.empty);
...
rv.setPendingIntentTemplate(R.id.my_list, pendingIntentTemplate);
appWidgetMgr.notifyAppWidgetViewDataChanged(appWidgetId, R.id.my_list);
RemoteViewsService RemoteViewsService.RemoteViewsFactory.
100%, , , , notifyAppWidgetViewDataChanged, . , - (SharedPreferences).