aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKazuki Yamaguchi <k@rhe.jp>2017-10-05 09:43:26 +0900
committerKazuki Yamaguchi <k@rhe.jp>2017-10-05 09:43:26 +0900
commit52ad6edcb217762154a80990c34ca94772393848 (patch)
treeed92ab3de24a1be2c51e07562935e4d7aa233b0b
parent0f5f7dbc8a0a0751b69ac733be0d90416fc5cb5d (diff)
downloadSmileEssence-52ad6edcb217762154a80990c34ca94772393848.tar.gz
remember last used world
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/Application.java11
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;
}
}