Почему не вызывается повторно метод onGetViewFactory?

224
11 мая 2019, 14:30

При запуске виджета метод onGetViewFactory запускается и создается объект ViewsFactory и вызываеться метод onCreate .

А когда происходит обновление через 60сек, уже повторно метод onGetViewFactory не запускаеться и не запускается цепочка, почему?

Как сделать запуск по новой после обновления?

AppWidget.java

public class AppWidget extends AppWidgetProvider {
public static final String LOG_TAG = "Log";
void  updateAppWidget(Context context, AppWidgetManager appWidgetManager, int appWidgetId) {
    Log.d( AppWidget.LOG_TAG, "updateAppWidget "+ appWidgetId);
    RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.app_widget);
    Intent adapter = new Intent(context, MyService.class);
    adapter.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
    views.setRemoteAdapter(R.id.list, adapter);
    appWidgetManager.updateAppWidget(appWidgetId, views);
}
public void onReceive(final Context context, Intent intent) {
    super.onReceive(context, intent);
    AlarmManager alarmManager =(AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
    Intent i = new Intent(context, Receiver.class);
    PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, i, 0);
    alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), 60000 , pendingIntent);
}
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
    Log.d(LOG_TAG, "onUpdate");
    for (int appWidgetId : appWidgetIds) {
       updateAppWidget(context, appWidgetManager, appWidgetId);
    }
}
public void onEnabled(Context context) {
    super.onEnabled(context);
}
public void onDisabled(Context context) {
    AlarmManager alarmManager =(AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
    Intent intent = new Intent(context, Receiver.class);
    PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, intent, 0);
    alarmManager.cancel(pendingIntent);
}
}

MyService.java

public class MyService extends RemoteViewsService {
public RemoteViewsFactory onGetViewFactory(Intent intent) {
    return   new ViewsFactory();
}
private class ViewsFactory implements RemoteViewsFactory {
    ArrayList<JSONObject> data;
    public int getCount() { return 0; }
    public int getViewTypeCount() { return 1; }
    public RemoteViews getViewAt(int position) { return null; }
    public void onCreate() {   Log.d( AppWidget.LOG_TAG, "onCreate "); }
    public void onDataSetChanged() {}
    public void onDestroy() {}
    public RemoteViews getLoadingView() { return null; }
    public long getItemId(int position) { return 0; }
    public boolean hasStableIds() {return false; }
};
}

Receiver.java

public class Receiver extends BroadcastReceiver {
public void onReceive(Context context, Intent intent) {
    Log.d( AppWidget.LOG_TAG, "Updating widget");
    AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
    AppWidget Widget = new AppWidget();
    for (int appWidgetId :  appWidgetManager.getAppWidgetIds(new ComponentName(context.getPackageName(),
            AppWidget.class.getName()))) {
        Widget.updateAppWidget(context, appWidgetManager, appWidgetId);
    }
}
}
READ ALSO
Как распарсить Json, пришедший от response

Как распарсить Json, пришедший от response

Делаю String jsonStr = responsejson(), чтобы получить данные с ApiVk В итоге я получаю

195
Различие в результатах работы javac и Eclipse Compiler for Java

Различие в результатах работы javac и Eclipse Compiler for Java

Столкнулся с интересным различием поведения компиляторов javac и Eclipse Compiler for Java помогите разобраться почему их поведение отличается и какое...

200
Как можно изменять имя checkBox?

Как можно изменять имя checkBox?

Есть CheckBox, с id Checkbox1 и текстом NameCheckBox (это все вxml)

235
К вопросу о конструкторах в языке программирования Java [закрыт]

К вопросу о конструкторах в языке программирования Java [закрыт]

Возник достаточно интересный вопрос, на который я пока не смог найти ответ, но уверен, что здесь мне помогут

205