From ab121f23c30969f2a64865c4319ac281633eaa3b Mon Sep 17 00:00:00 2001 From: hyb1996 <946994919@qq.com> Date: Tue, 27 Feb 2018 09:59:36 +0800 Subject: [PATCH] global key observer lazy initialize --- app/src/main/java/com/stardust/scriptdroid/App.java | 4 +++- app/src/main/java/com/stardust/scriptdroid/Pref.java | 8 ++++++-- .../scriptdroid/autojs/key/GlobalKeyObserver.java | 7 +++++-- 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/com/stardust/scriptdroid/App.java b/app/src/main/java/com/stardust/scriptdroid/App.java index db418128..1961131f 100644 --- a/app/src/main/java/com/stardust/scriptdroid/App.java +++ b/app/src/main/java/com/stardust/scriptdroid/App.java @@ -81,7 +81,9 @@ public class App extends MultiDexApplication { ThemeColorManager.setDefaultThemeColor(new ThemeColor(getResources().getColor(R.color.colorPrimary), getResources().getColor(R.color.colorPrimaryDark), getResources().getColor(R.color.colorAccent))); ThemeColorManager.init(this); AutoJs.initInstance(this); - GlobalKeyObserver.getSingleton(); + if (Pref.isRunningVolumeControlEnabled()) { + GlobalKeyObserver.init(); + } setupDrawableImageLoader(); TimedTaskScheduler.setupRepeating(this); } diff --git a/app/src/main/java/com/stardust/scriptdroid/Pref.java b/app/src/main/java/com/stardust/scriptdroid/Pref.java index 8ccc630a..7aaec39f 100644 --- a/app/src/main/java/com/stardust/scriptdroid/Pref.java +++ b/app/src/main/java/com/stardust/scriptdroid/Pref.java @@ -5,6 +5,7 @@ import android.content.SharedPreferences; import android.preference.PreferenceManager; import com.stardust.autojs.runtime.accessibility.AccessibilityConfig; +import com.stardust.scriptdroid.autojs.key.GlobalKeyObserver; import java.util.concurrent.TimeUnit; @@ -24,9 +25,12 @@ public class Pref { private static SharedPreferences.OnSharedPreferenceChangeListener onSharedPreferenceChangeListener = new SharedPreferences.OnSharedPreferenceChangeListener() { @Override - public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { + public void onSharedPreferenceChanged(SharedPreferences p, String key) { if (key.equals(getString(R.string.key_guard_mode))) { - AccessibilityConfig.setIsUnintendedGuardEnabled(sharedPreferences.getBoolean(getString(R.string.key_guard_mode), false)); + AccessibilityConfig.setIsUnintendedGuardEnabled(p.getBoolean(getString(R.string.key_guard_mode), false)); + } else if ((key.equals(getString(R.string.key_use_volume_control_record)) || key.equals(getString(R.string.key_use_volume_control_running))) + && p.getBoolean(key, false)) { + GlobalKeyObserver.init(); } } }; diff --git a/app/src/main/java/com/stardust/scriptdroid/autojs/key/GlobalKeyObserver.java b/app/src/main/java/com/stardust/scriptdroid/autojs/key/GlobalKeyObserver.java index 5b7e6e5c..78557535 100644 --- a/app/src/main/java/com/stardust/scriptdroid/autojs/key/GlobalKeyObserver.java +++ b/app/src/main/java/com/stardust/scriptdroid/autojs/key/GlobalKeyObserver.java @@ -25,7 +25,7 @@ public class GlobalKeyObserver implements OnKeyListener, ShellKeyObserver.KeyLis private static final EventDispatcher.Event VOLUME_DOWN_EVENT = OnVolumeDownListener::onVolumeDown; private static final String LOG_TAG = "GlobalKeyObserver"; private static final long EVENT_TIMEOUT = 200; - private static GlobalKeyObserver sSingleton = new GlobalKeyObserver(); + private static GlobalKeyObserver sSingleton; private EventDispatcher mVolumeDownEventDispatcher = new EventDispatcher<>(); private boolean mVolumeDownFromShell, mVolumeDownFromAccessibility; private boolean mVolumeUpFromShell, mVolumeUpFromAccessibility; @@ -39,11 +39,14 @@ public class GlobalKeyObserver implements OnKeyListener, ShellKeyObserver.KeyLis } public static GlobalKeyObserver getSingleton() { + if (sSingleton == null) { + sSingleton = new GlobalKeyObserver(); + } return sSingleton; } public static void init() { - //do nothing + getSingleton(); } public void onVolumeUp() {