summaryrefslogtreecommitdiff
path: root/Source/Android/app/src/main/java/org
diff options
context:
space:
mode:
authorJosJuice <josjuice@gmail.com>2019-06-16 15:32:36 +0200
committerJosJuice <josjuice@gmail.com>2019-08-21 18:46:49 +0200
commit47e1108d572b48ef213c0a3d0e354f69a99c7c79 (patch)
treee0b9f4f5a8a8f772d09ef06a8e0d60e9118d57f4 /Source/Android/app/src/main/java/org
parent2a95227f64c26b8688c2346af15fb54644779571 (diff)
Android: Add helper class AfterDirectoryInitializationRunner
Diffstat (limited to 'Source/Android/app/src/main/java/org')
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/AfterDirectoryInitializationRunner.java50
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/Analytics.java29
2 files changed, 52 insertions, 27 deletions
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/AfterDirectoryInitializationRunner.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/AfterDirectoryInitializationRunner.java
new file mode 100644
index 0000000000..0ce87b2b8a
--- /dev/null
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/AfterDirectoryInitializationRunner.java
@@ -0,0 +1,50 @@
+package org.dolphinemu.dolphinemu.utils;
+
+import android.content.Context;
+import android.content.IntentFilter;
+import android.support.v4.content.LocalBroadcastManager;
+
+public class AfterDirectoryInitializationRunner
+{
+ private DirectoryStateReceiver directoryStateReceiver;
+
+ /**
+ * Executes a Runnable after directory initialization has finished.
+ *
+ * If this is called when directory initialization already is done,
+ * the Runnable will be executed immediately. If this is called before
+ * directory initialization is done, the Runnable will be executed
+ * after directory initialization finishes successfully, or never
+ * in case directory initialization doesn't finish successfully.
+ *
+ * Calling this function multiple times per object is not supported.
+ */
+ public void run(Context context, Runnable runnable)
+ {
+ if (!DirectoryInitialization.areDolphinDirectoriesReady())
+ {
+ // Wait for directories to get initialized
+ IntentFilter statusIntentFilter = new IntentFilter(
+ DirectoryInitialization.BROADCAST_ACTION);
+
+ directoryStateReceiver = new DirectoryStateReceiver(directoryInitializationState ->
+ {
+ if (directoryInitializationState ==
+ DirectoryInitialization.DirectoryInitializationState.DOLPHIN_DIRECTORIES_INITIALIZED)
+ {
+ LocalBroadcastManager.getInstance(context).unregisterReceiver(directoryStateReceiver);
+ directoryStateReceiver = null;
+ runnable.run();
+ }
+ });
+ // Registers the DirectoryStateReceiver and its intent filters
+ LocalBroadcastManager.getInstance(context).registerReceiver(
+ directoryStateReceiver,
+ statusIntentFilter);
+ }
+ else
+ {
+ runnable.run();
+ }
+ }
+}
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/Analytics.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/Analytics.java
index 6f3e07cbb5..cb7aec2056 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/Analytics.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/Analytics.java
@@ -18,8 +18,6 @@ import org.dolphinemu.dolphinemu.features.settings.utils.SettingsFile;
public class Analytics
{
- private static DirectoryStateReceiver directoryStateReceiver;
-
private static final String analyticsAsked =
Settings.SECTION_ANALYTICS + "_" + SettingsFile.KEY_ANALYTICS_PERMISSION_ASKED;
private static final String analyticsEnabled =
@@ -35,31 +33,8 @@ public class Analytics
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
if (!preferences.getBoolean(analyticsAsked, false))
{
- if (!DirectoryInitialization.areDolphinDirectoriesReady())
- {
- // Wait for directories to get initialized
- IntentFilter statusIntentFilter = new IntentFilter(
- DirectoryInitialization.BROADCAST_ACTION);
-
- directoryStateReceiver = new DirectoryStateReceiver(directoryInitializationState ->
- {
- if (directoryInitializationState ==
- DirectoryInitialization.DirectoryInitializationState.DOLPHIN_DIRECTORIES_INITIALIZED)
- {
- LocalBroadcastManager.getInstance(context).unregisterReceiver(directoryStateReceiver);
- directoryStateReceiver = null;
- showMessage(context, preferences);
- }
- });
- // Registers the DirectoryStateReceiver and its intent filters
- LocalBroadcastManager.getInstance(context).registerReceiver(
- directoryStateReceiver,
- statusIntentFilter);
- }
- else
- {
- showMessage(context, preferences);
- }
+ new AfterDirectoryInitializationRunner().run(context,
+ () -> showMessage(context, preferences));
}
}