diff options
author | Kazuki Yamaguchi <k@rhe.jp> | 2017-10-05 09:43:26 +0900 |
---|---|---|
committer | Kazuki Yamaguchi <k@rhe.jp> | 2017-10-05 09:43:26 +0900 |
commit | 52ad6edcb217762154a80990c34ca94772393848 (patch) | |
tree | ed92ab3de24a1be2c51e07562935e4d7aa233b0b | |
parent | 0f5f7dbc8a0a0751b69ac733be0d90416fc5cb5d (diff) | |
download | SmileEssence-52ad6edcb217762154a80990c34ca94772393848.tar.gz |
remember last used world
-rw-r--r-- | app/src/main/java/net/lacolaco/smileessence/Application.java | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/app/src/main/java/net/lacolaco/smileessence/Application.java b/app/src/main/java/net/lacolaco/smileessence/Application.java index 72af2630..adefcae1 100644 --- a/app/src/main/java/net/lacolaco/smileessence/Application.java +++ b/app/src/main/java/net/lacolaco/smileessence/Application.java @@ -45,6 +45,7 @@ import java.util.Map; */ public class Application extends android.app.Application { private static Application instance; + private static WeakReference<World> lastWorld; private static Map<Long, WeakReference<World>> worlds = new HashMap<>(); // XXX @Deprecated @@ -84,8 +85,10 @@ public class Application extends android.app.Application { Logger.debug("onCreate"); } - @Deprecated public static World getCurrentWorld() { + World w0 = lastWorld != null ? lastWorld.get() : null; + if (w0 != null) + return w0; for (WeakReference<World> ww : worlds.values()) { World w = ww.get(); if (w != null) @@ -98,11 +101,13 @@ public class Application extends android.app.Application { WeakReference<World> ww = worlds.get(id); if (ww != null) { World w = ww.get(); - if (w != null) + if (w != null) { + lastWorld = ww; return w; + } } World w = new World(Account.get(id)); - worlds.put(id, new WeakReference<>(w)); + worlds.put(id, lastWorld = new WeakReference<>(w)); return w; } } |