From 3f1fae87eaf3b01ae4103dd8fa6f4134e4e29e0d Mon Sep 17 00:00:00 2001 From: Ghabry Date: Wed, 22 Jan 2025 18:31:12 +0100 Subject: [PATCH] Android: Reload native libraries from all Game Browser / Setting activities Otherwise gives UnsatisfiedLinkError when the app was killed due to OOM etc. --- .../java/org/easyrpg/player/BaseActivity.java | 31 +++++++++++++++++-- .../game_browser/GameBrowserActivity.java | 13 -------- 2 files changed, 28 insertions(+), 16 deletions(-) diff --git a/builds/android/app/src/main/java/org/easyrpg/player/BaseActivity.java b/builds/android/app/src/main/java/org/easyrpg/player/BaseActivity.java index 5526cfb17a..0c09a6af5f 100644 --- a/builds/android/app/src/main/java/org/easyrpg/player/BaseActivity.java +++ b/builds/android/app/src/main/java/org/easyrpg/player/BaseActivity.java @@ -1,23 +1,48 @@ package org.easyrpg.player; import android.os.Bundle; +import android.util.Log; + import androidx.appcompat.app.AppCompatActivity; import org.easyrpg.player.settings.SettingsManager; -public class BaseActivity extends AppCompatActivity { +/** + * This activity is used by the GameBrowser and the settings. + */ +public class BaseActivity extends AppCompatActivity { + public static Boolean libraryLoaded = false; + + private static void loadNativeLibraries() { + if (!libraryLoaded) { + try { + System.loadLibrary("easyrpg_android"); + System.loadLibrary("gamebrowser"); + libraryLoaded = true; + } catch (UnsatisfiedLinkError e) { + Log.e("EasyRPG Player", "Couldn't load libgamebrowser: " + e.getMessage()); + throw e; + } + } + } + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - // Retrieve User's preferences - SettingsManager.init(getApplicationContext()); + init(); } @Override protected void onResume() { super.onResume(); + init(); + } + + protected void init() { // Retrieve User's preferences SettingsManager.init(getApplicationContext()); + + loadNativeLibraries(); } } diff --git a/builds/android/app/src/main/java/org/easyrpg/player/game_browser/GameBrowserActivity.java b/builds/android/app/src/main/java/org/easyrpg/player/game_browser/GameBrowserActivity.java index 746c885af3..649aa7305d 100644 --- a/builds/android/app/src/main/java/org/easyrpg/player/game_browser/GameBrowserActivity.java +++ b/builds/android/app/src/main/java/org/easyrpg/player/game_browser/GameBrowserActivity.java @@ -44,8 +44,6 @@ public class GameBrowserActivity extends BaseActivity implements NavigationView.OnNavigationItemSelectedListener { - public static Boolean libraryLoaded = false; - private static final int THUMBNAIL_HORIZONTAL_SIZE_DPI = 290; private static Game selectedGame; @@ -58,17 +56,6 @@ public class GameBrowserActivity extends BaseActivity protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - if (!libraryLoaded) { - try { - System.loadLibrary("easyrpg_android"); - System.loadLibrary("gamebrowser"); - libraryLoaded = true; - } catch (UnsatisfiedLinkError e) { - Log.e("EasyRPG Player", "Couldn't load libgamebrowser: " + e.getMessage()); - throw e; - } - } - SDL.setContext(getApplicationContext()); setContentView(R.layout.activity_games_browser);