При запуске виджета метод 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);
}
}
}
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости