summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorJason A. Donenfeld <Jason@zx2c4.com>2018-06-04 18:35:18 +0200
committerJason A. Donenfeld <Jason@zx2c4.com>2018-06-04 18:35:18 +0200
commit0c0c1acc3bee09671e40b1bc19798e053f56aaf9 (patch)
tree2e5a62793db7b51d9562690f3684998743510eac
parent48f796c46351a213ea6d976c60fe17aa62aea140 (diff)
BaseActivity: support android 5 and 6 when clearing drawable cache
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
-rw-r--r--app/src/main/java/com/wireguard/android/activity/BaseActivity.java22
1 files changed, 15 insertions, 7 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 3cce412d..2ebb6e90 100644
--- a/app/src/main/java/com/wireguard/android/activity/BaseActivity.java
+++ b/app/src/main/java/com/wireguard/android/activity/BaseActivity.java
@@ -120,18 +120,26 @@ public abstract class BaseActivity extends AppCompatActivity implements Topic.Su
}
@Override
- public void onTopicPublished(Topic topic) {
+ public void onTopicPublished(final Topic topic) {
if (topic == Application.getComponent().getThemeChangeTopic()) {
try {
- Field f = getResources().getClass().getDeclaredField("mResourcesImpl");
- f.setAccessible(true);
- Object o = f.get(getResources());
+ Field f;
+ Object o = getResources();
+ try {
+ f = o.getClass().getDeclaredField("mResourcesImpl");
+ f.setAccessible(true);
+ o = f.get(o);
+ } catch (final Exception ignored) { }
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);
+ try {
+ o.getClass().getMethod("onConfigurationChange", int.class).invoke(o, -1);
+ } catch (final Exception ignored) {
+ o.getClass().getMethod("clear").invoke(o);
+ }
+ } catch (final Exception e) {
+ Log.e(TAG, "Failed to flush drawable cache", e);
}
recreate();
}