summaryrefslogtreecommitdiffhomepage
path: root/app/src/main/java/com/wireguard/android
diff options
context:
space:
mode:
authorJason A. Donenfeld <Jason@zx2c4.com>2018-06-04 16:42:38 +0200
committerJason A. Donenfeld <Jason@zx2c4.com>2018-06-04 17:57:02 +0200
commit8aab35a70dcd384e5505db263a293a79ef647241 (patch)
tree566c786e6198f44e01d652c666790ce7da2cf5b4 /app/src/main/java/com/wireguard/android
parente5f6c241741b2141a9aee52707ec3e1c12a7b384 (diff)
BaseActivity: invalidate icon cache on Android P
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
Diffstat (limited to 'app/src/main/java/com/wireguard/android')
-rw-r--r--app/src/main/java/com/wireguard/android/activity/BaseActivity.java27
-rw-r--r--app/src/main/java/com/wireguard/android/activity/SettingsActivity.java3
2 files changed, 15 insertions, 15 deletions
diff --git a/app/src/main/java/com/wireguard/android/activity/BaseActivity.java b/app/src/main/java/com/wireguard/android/activity/BaseActivity.java
index 7b6923f9..3cce412d 100644
--- a/app/src/main/java/com/wireguard/android/activity/BaseActivity.java
+++ b/app/src/main/java/com/wireguard/android/activity/BaseActivity.java
@@ -121,21 +121,20 @@ public abstract class BaseActivity extends AppCompatActivity implements Topic.Su
@Override
public void onTopicPublished(Topic topic) {
- try {
- Field f = getResources().getClass().getDeclaredField("mResourcesImpl");
- f.setAccessible(true);
- Object o = f.get(getResources());
- f = o.getClass().getDeclaredField("mDrawableCache");
- f.setAccessible(true);
- o = f.get(o);
- f = o.getClass().getSuperclass().getDeclaredField("mThemedEntries");
- f.setAccessible(true);
- o = f.get(o);
- o.getClass().getMethod("clear").invoke(o);
- } catch (Exception e) {
- Log.e(TAG, "Failed to flush icon cache", e);
+ if (topic == Application.getComponent().getThemeChangeTopic()) {
+ try {
+ Field f = getResources().getClass().getDeclaredField("mResourcesImpl");
+ f.setAccessible(true);
+ Object o = f.get(getResources());
+ f = o.getClass().getDeclaredField("mDrawableCache");
+ f.setAccessible(true);
+ o = f.get(o);
+ o.getClass().getMethod("onConfigurationChange", int.class).invoke(o, -1);
+ } catch (Exception e) {
+ Log.e(TAG, "Failed to flush icon cache", e);
+ }
+ recreate();
}
- recreate();
}
@Override
diff --git a/app/src/main/java/com/wireguard/android/activity/SettingsActivity.java b/app/src/main/java/com/wireguard/android/activity/SettingsActivity.java
index ed7c5457..d7238b96 100644
--- a/app/src/main/java/com/wireguard/android/activity/SettingsActivity.java
+++ b/app/src/main/java/com/wireguard/android/activity/SettingsActivity.java
@@ -101,7 +101,8 @@ public class SettingsActivity extends AppCompatActivity implements Topic.Subscri
@Override
public void onTopicPublished(final Topic topic) {
- recreate();
+ if (topic == Application.getComponent().getThemeChangeTopic())
+ recreate();
}
@Override