From 733cc27599767fc952d683571d7c3f9a49910cc2 Mon Sep 17 00:00:00 2001 From: serso Date: Sat, 24 Jan 2015 23:42:19 +0100 Subject: [PATCH] Fix for not responsive home screen widget If the app is killed the widget doesn't receive updates and it keeps the old value of the editor. Pressing f.e. cursor buttons in such case has not effect as real editor is empty and no "editor change" events are triggered, thus, widget is not updated. To solve the issue let's just update the widget any time its buttons are pressed. --- .../main/java/org/solovyev/android/calculator/App.java | 9 +++++++++ .../android/calculator/CalculatorBroadcaster.java | 6 +++--- .../solovyev/android/calculator/CalculatorReceiver.java | 2 ++ .../android/calculator/CalculatorApplication.java | 5 +---- 4 files changed, 15 insertions(+), 7 deletions(-) diff --git a/android-app-core/src/main/java/org/solovyev/android/calculator/App.java b/android-app-core/src/main/java/org/solovyev/android/calculator/App.java index 2842253f..0f575d7d 100644 --- a/android-app-core/src/main/java/org/solovyev/android/calculator/App.java +++ b/android-app-core/src/main/java/org/solovyev/android/calculator/App.java @@ -69,6 +69,9 @@ public final class App { private static volatile boolean initialized; + @Nonnull + private static CalculatorBroadcaster broadcaster; + private App() { throw new AssertionError(); } @@ -104,6 +107,7 @@ public final class App { App.locator = new ServiceLocator() { }; } + App.broadcaster = new CalculatorBroadcaster(application); App.initialized = true; } else { @@ -163,4 +167,9 @@ public final class App { checkInit(); return eventBus; } + + @Nonnull + public static CalculatorBroadcaster getBroadcaster() { + return broadcaster; + } } diff --git a/android-app-core/src/main/java/org/solovyev/android/calculator/CalculatorBroadcaster.java b/android-app-core/src/main/java/org/solovyev/android/calculator/CalculatorBroadcaster.java index 7a0a009a..5ad53464 100644 --- a/android-app-core/src/main/java/org/solovyev/android/calculator/CalculatorBroadcaster.java +++ b/android-app-core/src/main/java/org/solovyev/android/calculator/CalculatorBroadcaster.java @@ -32,15 +32,15 @@ public final class CalculatorBroadcaster implements CalculatorEventListener { } } - private void sendDisplayStateChanged() { + public void sendDisplayStateChanged() { sendBroadcastIntent(ACTION_DISPLAY_STATE_CHANGED); } - private void sendEditorStateChangedIntent() { + public void sendEditorStateChangedIntent() { sendBroadcastIntent(ACTION_EDITOR_STATE_CHANGED); } - private void sendBroadcastIntent(@Nonnull String action) { + public void sendBroadcastIntent(@Nonnull String action) { context.sendBroadcast(new Intent(action)); } } diff --git a/android-app-core/src/main/java/org/solovyev/android/calculator/CalculatorReceiver.java b/android-app-core/src/main/java/org/solovyev/android/calculator/CalculatorReceiver.java index 17c019c8..16dfe7ef 100644 --- a/android-app-core/src/main/java/org/solovyev/android/calculator/CalculatorReceiver.java +++ b/android-app-core/src/main/java/org/solovyev/android/calculator/CalculatorReceiver.java @@ -22,6 +22,8 @@ public final class CalculatorReceiver extends BroadcastReceiver { if (button != null) { button.onClick(context); } + + App.getBroadcaster().sendEditorStateChangedIntent(); } } diff --git a/android-app/src/main/java/org/solovyev/android/calculator/CalculatorApplication.java b/android-app/src/main/java/org/solovyev/android/calculator/CalculatorApplication.java index 7a9d295c..bbf55b23 100644 --- a/android-app/src/main/java/org/solovyev/android/calculator/CalculatorApplication.java +++ b/android-app/src/main/java/org/solovyev/android/calculator/CalculatorApplication.java @@ -97,9 +97,6 @@ public class CalculatorApplication extends android.app.Application implements Sh @Nonnull protected final Handler uiHandler = new Handler(); - @Nonnull - private final CalculatorBroadcaster broadcaster = new CalculatorBroadcaster(this); - @Nonnull private final Wizards wizards = new CalculatorWizards(this); @@ -194,7 +191,7 @@ public class CalculatorApplication extends android.app.Application implements Sh calculator.addCalculatorEventListener(listener); } - calculator.addCalculatorEventListener(broadcaster); + calculator.addCalculatorEventListener(App.getBroadcaster()); Locator.getInstance().getCalculator().init();