我声明了一个非最终静态对象,该对象与我的类中的其他常量一起SharedPreferences调用:PREFSConstants.java
public static SharedPreferences PREFS = null;
我这样做的原因是我的应用程序由大约 6 个不同的应用程序组成,AsyncTasks它们不断访问相同的共享首选项文件,我不想每次都得到SharedPreferences它。Editor在我的应用程序第一次运行时,我调用getSharedPreferences()了 myMainActivity并将其存储到,PREFS以便它在 s 被触发之前指向一个实例AsyncTask,因此避免了NullPointerException.
但是,无论如何,我一直NullPointerException从 s 得到 s 。AsyncTask所有堆栈跟踪都指向我调用Constants.PREFS以获取值的行。我的理论是,一段时间后,Android 会杀死我的应用程序的进程,所以下一次我的任何 s 的警报响起AsyncTask时,值Constants.PREFS已经是null.
我的问题是:我应该为它创建一个静态变量Context吗?即使 Android 终止了我的进程,它的状态是否会持续存在?Context当我的 s 被实例化时,我总是传递对AsyncTasks 的引用,这样他们就可以调用getSystemService(),并且永远不会抛出NullPointerException。但是,我没有看到从 Android 文档Context扩展。Serializable