android是否会为了释放内存而杀死单身()

非淡泊无以明志,非宁静无以致远。这篇文章主要讲述android是否会为了释放内存而杀死单身?相关的知识,希望能为你提供帮助。
我有一个非常奇怪的问题,很难描述所以请仔细阅读答案之前的假设,以避免跳进我已经知道的东西不是
1- 我有一个从我的服务器登录的android应用程序 2- 成功登录后,我实例化一个Singleton API,它将在各个活动之间共享,以便向服务器发出请求 3- 无法登录时无法使用该应用程序 4- 在我的登录活动中,我的情况非常干净

if(APIFacade.getInstance() != null){ startActivity(new Intent(this,MainActivity.class)); finish(); }else {/*error handling*/}

5- 在整个startActivityclass中只有一次调用LoginActivity方法,因此无法在不检查外观是否为空的情况下启动MainActivity 6- 在实例化之后无法将APIFacade.INSTANCE设置为null
但即使有这些条件,有时用户在NullPointerException上获取MainActivity,当应用程序尝试在登录后首次调用API时
String url = APIFacade.getInstance().getProfilePicUrl(); //throws nullpointerexception on 5% of the times
APIFacade类是这样的:
public class APIFacade { private static APIFacade INSTANCE = null; @WorkerThread public APIFacade(Object i, final boolean preLoad) { INSTANCE = this; //other stuff }public static APIFacade getInstance() { return INSTANCE; } }

我无法在开发环境中重现这个问题所以我只知道它是由于firebase上的崩溃性仪表板而发生的...
我相信我的代码没有泄漏来引导这种情况,所以我得到的唯一理论是:当我的应用程序进入后台时,Android正在清理内存中的一些变量...
【android是否会为了释放内存而杀死单身()】我知道android自然会用于活动,但是单身人士?如果是,我该怎么做才能解决它?
答案好吧,由于一篇很棒的文章,我自己找到了答案:https://medium.com/@davethomas_9528/please-dont-use-singletons-to-persist-state-on-android-7bac9bc78b29
简述: 每个人都说android上的singleston附加到应用程序生命周期,因此只有在应用程序被杀死时才会释放
这是真的
您没有听到的是,应用程序可以被SO杀死而无需用户交互(为前台应用程序释放内存),在这种情况下,当用户尝试返回到您的应用程序时,它将从上次使用的活动重新启动而不是来自发射器活动。

    推荐阅读