diff options
author | Jason A. Donenfeld <Jason@zx2c4.com> | 2018-06-04 18:35:18 +0200 |
---|---|---|
committer | Jason A. Donenfeld <Jason@zx2c4.com> | 2018-06-04 18:35:18 +0200 |
commit | 0c0c1acc3bee09671e40b1bc19798e053f56aaf9 (patch) | |
tree | 2e5a62793db7b51d9562690f3684998743510eac | |
parent | 48f796c46351a213ea6d976c60fe17aa62aea140 (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.java | 22 |
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(); } |