Found the answer here by @Joe onGetViewFactory only called once for multiple widgets
As it turns out, it is something about how RemoteViewService intent handling. I was creating the RemoteViewService intent like what I 99.999% normally do in any activity, ex:
// Create intent to start the service and to act as the remote listView adapter
Intent remoteViewIntent = new Intent(context, WidgetRemoteViewService.class);
remoteViewIntent.putExtra(EXTRA_RECIPE_ID, recipeId);
views.setRemoteAdapter(R.id.widget_recipe_ingredients_list, remoteViewIntent);
Solution: Instead of
remoteViewIntent.putExtra(EXTRA_RECIPE_ID, recipeId);
Change it to:
remoteViewIntent.setData(Uri.fromParts("content", String.valueOf(recipeId), null));
and in the RemoteViewsService's onGetViewFactory(), get the data from the intent like so:
long mRecipeId = Long.valueOf(intent.getData().getSchemeSpecificPart());