Intents in Broabcaster are now cached
This commit is contained in:
parent
7f5d3c9fe4
commit
21b56bbe59
@ -6,6 +6,8 @@ import android.content.SharedPreferences;
|
|||||||
|
|
||||||
import javax.annotation.Nonnull;
|
import javax.annotation.Nonnull;
|
||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
public final class CalculatorBroadcaster implements CalculatorEventListener, SharedPreferences.OnSharedPreferenceChangeListener {
|
public final class CalculatorBroadcaster implements CalculatorEventListener, SharedPreferences.OnSharedPreferenceChangeListener {
|
||||||
|
|
||||||
@ -17,6 +19,9 @@ public final class CalculatorBroadcaster implements CalculatorEventListener, Sha
|
|||||||
@Nonnull
|
@Nonnull
|
||||||
private final Context context;
|
private final Context context;
|
||||||
|
|
||||||
|
@Nonnull
|
||||||
|
private final Intents intents = new Intents();
|
||||||
|
|
||||||
public CalculatorBroadcaster(@Nonnull Context context, @Nonnull SharedPreferences preferences) {
|
public CalculatorBroadcaster(@Nonnull Context context, @Nonnull SharedPreferences preferences) {
|
||||||
this.context = context;
|
this.context = context;
|
||||||
preferences.registerOnSharedPreferenceChangeListener(this);
|
preferences.registerOnSharedPreferenceChangeListener(this);
|
||||||
@ -27,28 +32,20 @@ public final class CalculatorBroadcaster implements CalculatorEventListener, Sha
|
|||||||
switch (calculatorEventType) {
|
switch (calculatorEventType) {
|
||||||
case editor_state_changed:
|
case editor_state_changed:
|
||||||
case editor_state_changed_light:
|
case editor_state_changed_light:
|
||||||
sendEditorStateChangedIntent();
|
sendBroadcastIntent(ACTION_EDITOR_STATE_CHANGED);
|
||||||
break;
|
break;
|
||||||
case display_state_changed:
|
case display_state_changed:
|
||||||
sendDisplayStateChanged();
|
sendBroadcastIntent(ACTION_DISPLAY_STATE_CHANGED);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void sendDisplayStateChanged() {
|
|
||||||
sendBroadcastIntent(ACTION_DISPLAY_STATE_CHANGED);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void sendEditorStateChangedIntent() {
|
|
||||||
sendBroadcastIntent(ACTION_EDITOR_STATE_CHANGED);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void sendInitIntent() {
|
public void sendInitIntent() {
|
||||||
sendBroadcastIntent(ACTION_INIT);
|
sendBroadcastIntent(ACTION_INIT);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void sendBroadcastIntent(@Nonnull String action) {
|
public void sendBroadcastIntent(@Nonnull String action) {
|
||||||
context.sendBroadcast(new Intent(action));
|
context.sendBroadcast(intents.get(action));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -57,4 +54,20 @@ public final class CalculatorBroadcaster implements CalculatorEventListener, Sha
|
|||||||
sendBroadcastIntent(ACTION_THEME_CHANGED);
|
sendBroadcastIntent(ACTION_THEME_CHANGED);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static final class Intents {
|
||||||
|
@Nonnull
|
||||||
|
private Map<String, Intent> map = new HashMap<>();
|
||||||
|
|
||||||
|
@Nonnull
|
||||||
|
Intent get(@Nonnull String action) {
|
||||||
|
Intent intent = map.get(action);
|
||||||
|
if (intent != null) {
|
||||||
|
return intent;
|
||||||
|
}
|
||||||
|
intent = new Intent(action);
|
||||||
|
map.put(action, intent);
|
||||||
|
return intent;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user