Android 似乎不可能的NullPointerException

Android 似乎不可能的NullPointerException,android,Android,我在一个方法中有以下代码。这是整个方法: private boolean isPlaceEligible(String eligibleId) { SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(this); String current = sharedPrefs.getString( PrefsActivity.AUTO_INELIGIBLE_

我在一个方法中有以下代码。这是整个方法:

private boolean isPlaceEligible(String eligibleId) {

    SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(this);
    String current = sharedPrefs.getString(
            PrefsActivity.AUTO_INELIGIBLE_ID, PrefsActivity.AUTO_INELIGIBLE_ID_DEF);
    return !eligibleId.equals(current);

}
eligibleId已知为非空字符串。PrefsActivity.AUTO_Inqualified_ID是字符串键,PrefsActivity.AUTO_Inqualified_ID_DEF是该键的默认字符串

那些SharedReferences的JavaDocs没有说任何关于返回null的内容,但是我从市场控制台收到一些崩溃报告,说这个方法在NullPointerException上崩溃了。根据我收到的报告数量,我估计每300个用户中就有一个会发生这种情况,可能更少。他们中有两个人给我发了电子邮件,说这种事100%都会发生


有什么想法吗?

问题可能是在这一行中作为上下文传递的参数:

SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(this);
这似乎是解决办法:

SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());

在将eligibleId传递给该方法之前,您是否捕获了null引用?实际抛出NPE的是哪一行?是否有可能在初始化它所属的活动的上下文之前(在onCreate之前?)调用该引用而没有捕获它,但它首先通过另一个方法,如果NPE为null,该方法肯定会抛出NPE。我不知道是哪条线抛出的,只有方法,从跟踪中我可以看出。服务正在通过处理程序的handleMessage()方法调用它。它在onStartCommand()中获取消息。听起来很有希望。我无法重现这个问题,因此我必须发布一个应用程序更新,看看客户的反应如何。谢谢。希望你不会再收到了。:)他们还在进来。而且它们越来越普遍了。我让我的一个客户清除了他的应用程序数据,问题就永远消失了。共享偏好中可能存在某种腐败。