1
0
Fork 0
mirror of https://github.com/juce-framework/JUCE.git synced 2026-01-10 23:44:24 +00:00

Android: Avoid restarting activities on system-wide theme change

This commit is contained in:
reuk 2025-09-01 10:55:26 +01:00
parent f72bad64d2
commit 33a735dfd8
No known key found for this signature in database
6 changed files with 21 additions and 14 deletions

View file

@ -23,7 +23,7 @@
<uses-feature android:glEsVersion="0x00030000" android:required="true"/> <uses-feature android:glEsVersion="0x00030000" android:required="true"/>
<application android:label="@string/app_name" android:name="com.rmsl.juce.JuceApp" android:icon="@drawable/icon" android:hardwareAccelerated="false"> <application android:label="@string/app_name" android:name="com.rmsl.juce.JuceApp" android:icon="@drawable/icon" android:hardwareAccelerated="false">
<receiver android:name="com.rmsl.juce.Receiver" android:exported="false"/> <receiver android:name="com.rmsl.juce.Receiver" android:exported="false"/>
<activity android:name="com.rmsl.juce.JuceActivity" android:configChanges="keyboard|keyboardHidden|orientation|screenSize|navigation|smallestScreenSize|screenLayout" <activity android:name="com.rmsl.juce.JuceActivity" android:configChanges="keyboard|keyboardHidden|orientation|screenSize|navigation|smallestScreenSize|screenLayout|uiMode"
android:launchMode="singleTask" android:hardwareAccelerated="true" android:exported="true"> android:launchMode="singleTask" android:hardwareAccelerated="true" android:exported="true">
<intent-filter> <intent-filter>
<action android:name="android.intent.action.MAIN"/> <action android:name="android.intent.action.MAIN"/>

View file

@ -13,7 +13,7 @@
<uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.INTERNET"/>
<application android:label="@string/app_name" android:name="com.rmsl.juce.JuceApp" android:hardwareAccelerated="false"> <application android:label="@string/app_name" android:name="com.rmsl.juce.JuceApp" android:hardwareAccelerated="false">
<receiver android:name="com.rmsl.juce.Receiver" android:exported="false"/> <receiver android:name="com.rmsl.juce.Receiver" android:exported="false"/>
<activity android:name="com.rmsl.juce.JuceActivity" android:configChanges="keyboard|keyboardHidden|orientation|screenSize|navigation|smallestScreenSize|screenLayout" <activity android:name="com.rmsl.juce.JuceActivity" android:configChanges="keyboard|keyboardHidden|orientation|screenSize|navigation|smallestScreenSize|screenLayout|uiMode"
android:launchMode="singleTask" android:hardwareAccelerated="true" android:exported="true"> android:launchMode="singleTask" android:hardwareAccelerated="true" android:exported="true">
<intent-filter> <intent-filter>
<action android:name="android.intent.action.MAIN"/> <action android:name="android.intent.action.MAIN"/>

View file

@ -22,7 +22,7 @@
<uses-feature android:glEsVersion="0x00030000" android:required="true"/> <uses-feature android:glEsVersion="0x00030000" android:required="true"/>
<application android:label="@string/app_name" android:name="com.rmsl.juce.JuceApp" android:icon="@drawable/icon" android:hardwareAccelerated="false"> <application android:label="@string/app_name" android:name="com.rmsl.juce.JuceApp" android:icon="@drawable/icon" android:hardwareAccelerated="false">
<receiver android:name="com.rmsl.juce.Receiver" android:exported="false"/> <receiver android:name="com.rmsl.juce.Receiver" android:exported="false"/>
<activity android:name="com.rmsl.juce.JuceActivity" android:configChanges="keyboard|keyboardHidden|orientation|screenSize|navigation|smallestScreenSize|screenLayout" <activity android:name="com.rmsl.juce.JuceActivity" android:configChanges="keyboard|keyboardHidden|orientation|screenSize|navigation|smallestScreenSize|screenLayout|uiMode"
android:launchMode="singleTask" android:hardwareAccelerated="true" android:exported="true"> android:launchMode="singleTask" android:hardwareAccelerated="true" android:exported="true">
<intent-filter> <intent-filter>
<action android:name="android.intent.action.MAIN"/> <action android:name="android.intent.action.MAIN"/>

View file

@ -14,7 +14,7 @@
<uses-feature android:glEsVersion="0x00030000" android:required="true"/> <uses-feature android:glEsVersion="0x00030000" android:required="true"/>
<application android:label="@string/app_name" android:name="com.rmsl.juce.JuceApp" android:icon="@drawable/icon" android:hardwareAccelerated="false"> <application android:label="@string/app_name" android:name="com.rmsl.juce.JuceApp" android:icon="@drawable/icon" android:hardwareAccelerated="false">
<receiver android:name="com.rmsl.juce.Receiver" android:exported="false"/> <receiver android:name="com.rmsl.juce.Receiver" android:exported="false"/>
<activity android:name="com.rmsl.juce.JuceActivity" android:configChanges="keyboard|keyboardHidden|orientation|screenSize|navigation|smallestScreenSize|screenLayout" <activity android:name="com.rmsl.juce.JuceActivity" android:configChanges="keyboard|keyboardHidden|orientation|screenSize|navigation|smallestScreenSize|screenLayout|uiMode"
android:launchMode="singleTask" android:hardwareAccelerated="true" android:exported="true"> android:launchMode="singleTask" android:hardwareAccelerated="true" android:exported="true">
<intent-filter> <intent-filter>
<action android:name="android.intent.action.MAIN"/> <action android:name="android.intent.action.MAIN"/>

View file

@ -1846,7 +1846,7 @@ private:
setAttributeIfNotPresent (*act, "android:name", getActivityClassString()); setAttributeIfNotPresent (*act, "android:name", getActivityClassString());
if (! act->hasAttribute ("android:configChanges")) if (! act->hasAttribute ("android:configChanges"))
act->setAttribute ("android:configChanges", "keyboard|keyboardHidden|orientation|screenSize|navigation|smallestScreenSize|screenLayout"); act->setAttribute ("android:configChanges", "keyboard|keyboardHidden|orientation|screenSize|navigation|smallestScreenSize|screenLayout|uiMode");
if (androidScreenOrientation.get() != "unspecified") if (androidScreenOrientation.get() != "unspecified")
{ {

View file

@ -2562,18 +2562,25 @@ public:
bool isDarkModeEnabled() const noexcept { return darkModeEnabled; } bool isDarkModeEnabled() const noexcept { return darkModeEnabled; }
void onActivityStarted (jobject /*activity*/) override private:
void onActivityStarted (jobject) override
{ {
const auto isEnabled = getDarkModeSetting(); updateMode();
}
if (darkModeEnabled != isEnabled)
{ void onActivityConfigurationChanged (jobject) override
darkModeEnabled = isEnabled; {
Desktop::getInstance().darkModeChanged(); updateMode();
} }
void updateMode()
{
const auto current = getDarkModeSetting();
if (std::exchange (darkModeEnabled, current) != current)
Desktop::getInstance().darkModeChanged();
} }
private:
static bool getDarkModeSetting() static bool getDarkModeSetting()
{ {
auto* env = getEnv(); auto* env = getEnv();