1
0
Fork 0
mirror of https://github.com/juce-framework/JUCE.git synced 2026-01-09 23:34:20 +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"/>
<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"/>
<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">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>

View file

@ -13,7 +13,7 @@
<uses-permission android:name="android.permission.INTERNET"/>
<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"/>
<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">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>

View file

@ -22,7 +22,7 @@
<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">
<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">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>

View file

@ -14,7 +14,7 @@
<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">
<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">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>

View file

@ -1846,7 +1846,7 @@ private:
setAttributeIfNotPresent (*act, "android:name", getActivityClassString());
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")
{

View file

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