diff --git a/app/src/main/java/eu/faircode/email/WidgetUnified.java b/app/src/main/java/eu/faircode/email/WidgetUnified.java index d79996ec67..94b560ddfc 100644 --- a/app/src/main/java/eu/faircode/email/WidgetUnified.java +++ b/app/src/main/java/eu/faircode/email/WidgetUnified.java @@ -22,7 +22,6 @@ package eu.faircode.email; import android.app.PendingIntent; import android.appwidget.AppWidgetManager; import android.appwidget.AppWidgetProvider; -import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.net.Uri; @@ -58,10 +57,4 @@ public class WidgetUnified extends AppWidgetProvider { appWidgetManager.updateAppWidget(id, views); } } - - static void update(Context context) { - AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context); - int[] appWidgetIds = appWidgetManager.getAppWidgetIds(new ComponentName(context, WidgetUnified.class)); - appWidgetManager.notifyAppWidgetViewDataChanged(appWidgetIds, R.id.lv); - } } diff --git a/app/src/main/java/eu/faircode/email/WidgetUnifiedRemoteViewsFactory.java b/app/src/main/java/eu/faircode/email/WidgetUnifiedRemoteViewsFactory.java index c61b78b392..1b651eb2e4 100644 --- a/app/src/main/java/eu/faircode/email/WidgetUnifiedRemoteViewsFactory.java +++ b/app/src/main/java/eu/faircode/email/WidgetUnifiedRemoteViewsFactory.java @@ -19,6 +19,7 @@ package eu.faircode.email; Copyright 2018-2019 by Marcel Bokhorst (M66B) */ +import android.appwidget.AppWidgetManager; import android.content.Context; import android.content.Intent; import android.graphics.Typeface; @@ -40,11 +41,15 @@ import static android.os.Looper.getMainLooper; public class WidgetUnifiedRemoteViewsFactory implements RemoteViewsService.RemoteViewsFactory { private Context context; + private int appWidgetId; + private Handler handler; private TwoStateOwner owner; private List messages = new ArrayList<>(); - WidgetUnifiedRemoteViewsFactory(final Context context) { + WidgetUnifiedRemoteViewsFactory(final Context context, final int appWidgetId) { + this.appWidgetId = appWidgetId; + this.context = context; this.handler = new Handler(getMainLooper()); @@ -52,7 +57,7 @@ public class WidgetUnifiedRemoteViewsFactory implements RemoteViewsService.Remot @Override public void run() { DB db = DB.getInstance(context); - owner = new TwoStateOwner("WidgetUnified"); + owner = new TwoStateOwner("WidgetUnified:" + appWidgetId); db.message().liveWidgetUnified().observe(owner, new Observer>() { @Override public void onChanged(List messages) { @@ -78,8 +83,11 @@ public class WidgetUnifiedRemoteViewsFactory implements RemoteViewsService.Remot WidgetUnifiedRemoteViewsFactory.this.messages = messages; - if (changed) - WidgetUnified.update(context); + if (changed) { + Log.i("Widget factory notify changed id=" + appWidgetId); + AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context); + appWidgetManager.notifyAppWidgetViewDataChanged(new int[]{appWidgetId}, R.id.lv); + } } }); } @@ -88,7 +96,7 @@ public class WidgetUnifiedRemoteViewsFactory implements RemoteViewsService.Remot @Override public void onCreate() { - Log.i("Widget factory create"); + Log.i("Widget factory create id=" + appWidgetId); handler.post(new Runnable() { @Override public void run() { @@ -99,11 +107,12 @@ public class WidgetUnifiedRemoteViewsFactory implements RemoteViewsService.Remot @Override public void onDataSetChanged() { + Log.i("Widget factory changed id=" + appWidgetId); } @Override public void onDestroy() { - Log.i("Widget factory destroy"); + Log.i("Widget factory destroy id=" + appWidgetId); handler.post(new Runnable() { @Override public void run() { diff --git a/app/src/main/java/eu/faircode/email/WidgetUnifiedService.java b/app/src/main/java/eu/faircode/email/WidgetUnifiedService.java index 6e3ed7fcce..d02d1c87ff 100644 --- a/app/src/main/java/eu/faircode/email/WidgetUnifiedService.java +++ b/app/src/main/java/eu/faircode/email/WidgetUnifiedService.java @@ -19,12 +19,16 @@ package eu.faircode.email; Copyright 2018-2019 by Marcel Bokhorst (M66B) */ +import android.appwidget.AppWidgetManager; import android.content.Intent; import android.widget.RemoteViewsService; public class WidgetUnifiedService extends RemoteViewsService { @Override public RemoteViewsFactory onGetViewFactory(Intent intent) { - return new WidgetUnifiedRemoteViewsFactory(this.getApplicationContext()); + return new WidgetUnifiedRemoteViewsFactory( + this.getApplicationContext(), + intent.getIntExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, + AppWidgetManager.INVALID_APPWIDGET_ID)); } }