我最近遇到一个问题,有时从后台服务访问单例会引发NullPointerException。
单例实例是在启动器活动中构建的,并且在我的应用程序期间保证不为空。
这引出了我对服务生命周期与应用程序流程生命周期的关系的问题。具体来说,以下是具体问题:
当活动进入后台时,包含的进程是否会被换出到辅助存储?如果是这样,那将如何影响在后台运行的服务?
当Android操作系统重启服务时,将恢复多少包含进程?该流程是否会成为该服务的包装器?
更新:以下是与我的单身实施相关的代码
private static User curUser = null;
public static User getCurUser(){
return curUser;
}
public static void setCurUser(User u){
curUser = u;
}
我的应用中只有一个地方调用setCurUser(),即启动器活动,它在设置之前保证用户非空。