diff --git a/platform/android/java/lib/src/org/pandemoniumengine/pandemonium/Pandemonium.java b/platform/android/java/lib/src/org/pandemoniumengine/pandemonium/Pandemonium.java index e94ea60911..a7081a389e 100644 --- a/platform/android/java/lib/src/org/pandemoniumengine/pandemonium/Pandemonium.java +++ b/platform/android/java/lib/src/org/pandemoniumengine/pandemonium/Pandemonium.java @@ -49,7 +49,6 @@ import android.content.pm.PackageManager; import android.content.pm.PackageManager.NameNotFoundException; import android.content.res.Resources; -import android.graphics.Point; import android.graphics.Rect; import android.hardware.Sensor; import android.hardware.SensorEvent; @@ -75,7 +74,6 @@ import android.view.WindowInsets; import android.view.WindowInsetsAnimation; import android.view.WindowManager; -import android.view.animation.AnimationUtils; import android.widget.Button; import android.widget.FrameLayout; import android.widget.ProgressBar; @@ -86,9 +84,6 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.annotation.StringRes; -import androidx.core.view.OnApplyWindowInsetsListener; -import androidx.core.view.ViewCompat; -import androidx.core.view.WindowInsetsCompat; import androidx.fragment.app.Fragment; import com.google.android.vending.expansion.downloader.DownloadProgressInfo; @@ -919,7 +914,8 @@ public void onPause() { } return; } - mView.onPause(); + + mView.onActivityPaused(); mSensorManager.unregisterListener(this); @@ -931,6 +927,18 @@ public void onPause() { } } + @Override + public void onStop() { + super.onStop(); + if (!pandemonium_initialized) { + if (null != mDownloaderClientStub) { + mDownloaderClientStub.disconnect(getActivity()); + } + return; + } + mView.onActivityStopped(); + } + public boolean hasClipboard() { return mClipboard.hasPrimaryClip(); } @@ -950,6 +958,19 @@ public void setClipboard(String p_text) { mClipboard.setPrimaryClip(clip); } + @Override + public void onStart() { + super.onStart(); + if (!pandemonium_initialized) { + if (null != mDownloaderClientStub) { + mDownloaderClientStub.connect(getActivity()); + } + return; + } + + mView.onActivityStarted(); + } + @Override public void onResume() { super.onResume(); @@ -961,7 +982,7 @@ public void onResume() { return; } - mView.onResume(); + mView.onActivityResumed(); mSensorManager.registerListener(this, mAccelerometer, SensorManager.SENSOR_DELAY_GAME); mSensorManager.registerListener(this, mGravity, SensorManager.SENSOR_DELAY_GAME); diff --git a/platform/android/java/lib/src/org/pandemoniumengine/pandemonium/PandemoniumView.java b/platform/android/java/lib/src/org/pandemoniumengine/pandemonium/PandemoniumView.java index 238af4abfa..3583dd3299 100644 --- a/platform/android/java/lib/src/org/pandemoniumengine/pandemonium/PandemoniumView.java +++ b/platform/android/java/lib/src/org/pandemoniumengine/pandemonium/PandemoniumView.java @@ -284,10 +284,11 @@ public PandemoniumInputHandler getInputHandler() { return inputHandler; } - @Override - public void onResume() { - super.onResume(); + void onActivityStarted() { + resumeGLThread(); + } + void onActivityResumed() { queueEvent(() -> { // Resume the renderer pandemoniumRenderer.onActivityResumed(); @@ -295,14 +296,15 @@ public void onResume() { }); } - @Override - public void onPause() { - super.onPause(); - + void onActivityPaused() { queueEvent(() -> { PandemoniumLib.focusout(); // Pause the renderer pandemoniumRenderer.onActivityPaused(); }); } + + void onActivityStopped() { + pauseGLThread(); + } } diff --git a/platform/android/java/lib/src/org/pandemoniumengine/pandemonium/gl/PandemoniumGLSurfaceView.java b/platform/android/java/lib/src/org/pandemoniumengine/pandemonium/gl/PandemoniumGLSurfaceView.java index 934b05ab26..85995fdaf9 100644 --- a/platform/android/java/lib/src/org/pandemoniumengine/pandemonium/gl/PandemoniumGLSurfaceView.java +++ b/platform/android/java/lib/src/org/pandemoniumengine/pandemonium/gl/PandemoniumGLSurfaceView.java @@ -250,8 +250,8 @@ public boolean getPreserveEGLContextOnPause() { * setRenderer is called: *