我声明了一个非最终静态对象,该对象与我的类中的其他常量一起SharedPreferences
调用:PREFS
Constants.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 被实例化时,我总是传递对AsyncTask
s 的引用,这样他们就可以调用getSystemService()
,并且永远不会抛出NullPointerException
。但是,我没有看到从 Android 文档Context
扩展。Serializable