summaryrefslogtreecommitdiff
path: root/Source/Android/app/src/main/java
diff options
context:
space:
mode:
Diffstat (limited to 'Source/Android/app/src/main/java')
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/DolphinApplication.java2
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/ActivityTracker.kt41
2 files changed, 43 insertions, 0 deletions
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/DolphinApplication.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/DolphinApplication.java
index c197c002b0..e0816e408b 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/DolphinApplication.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/DolphinApplication.java
@@ -6,6 +6,7 @@ import android.app.Application;
import android.content.Context;
import android.hardware.usb.UsbManager;
+import org.dolphinemu.dolphinemu.utils.ActivityTracker;
import org.dolphinemu.dolphinemu.utils.DirectoryInitialization;
import org.dolphinemu.dolphinemu.utils.Java_GCAdapter;
import org.dolphinemu.dolphinemu.utils.Java_WiimoteAdapter;
@@ -20,6 +21,7 @@ public class DolphinApplication extends Application
{
super.onCreate();
application = this;
+ registerActivityLifecycleCallbacks(new ActivityTracker());
VolleyUtil.init(getApplicationContext());
System.loadLibrary("main");
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/ActivityTracker.kt b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/ActivityTracker.kt
new file mode 100644
index 0000000000..b3a6a5d91a
--- /dev/null
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/ActivityTracker.kt
@@ -0,0 +1,41 @@
+package org.dolphinemu.dolphinemu.utils
+
+import android.app.Activity
+import android.app.Application.ActivityLifecycleCallbacks
+import android.os.Bundle
+
+class ActivityTracker : ActivityLifecycleCallbacks {
+ val resumedActivities = HashSet<Activity>()
+ var backgroundExecutionAllowed = false
+
+ override fun onActivityCreated(activity: Activity, bundle: Bundle?) {}
+
+ override fun onActivityStarted(activity: Activity) {}
+
+ override fun onActivityResumed(activity: Activity) {
+ resumedActivities.add(activity)
+ if (!backgroundExecutionAllowed && !resumedActivities.isEmpty()) {
+ backgroundExecutionAllowed = true
+ setBackgroundExecutionAllowedNative(true)
+ }
+ }
+
+ override fun onActivityPaused(activity: Activity) {
+ resumedActivities.remove(activity)
+ if (backgroundExecutionAllowed && resumedActivities.isEmpty()) {
+ backgroundExecutionAllowed = false
+ setBackgroundExecutionAllowedNative(false)
+ }
+ }
+
+ override fun onActivityStopped(activity: Activity) {}
+
+ override fun onActivitySaveInstanceState(activity: Activity, bundle: Bundle) {}
+
+ override fun onActivityDestroyed(activity: Activity) {}
+
+ companion object {
+ @JvmStatic
+ external fun setBackgroundExecutionAllowedNative(allowed: Boolean)
+ }
+}