使用后台服务读取应用程序数据的空引用错误

时间:2016-02-17 08:18:45

标签: android

我是保存和对象

"helpNavNode"

当我的应用程序打开时,我可以加载对象

"@class"

当我的应用程序关闭时,我在接收器收到某个意图时使用广播接收器加载对象,但我的"helNavNode"方法中出现空引用错误

saveObject(myKey, object);

static public void saveObject(String key, Object value){

    try{

        FileOutputStream fos = MainActivity.getAppContext().openFileOutput(key, Context.MODE_PRIVATE);
        ObjectOutputStream oos= new ObjectOutputStream(fos);
        oos.writeObject(value);
        oos.flush();
        oos.close();
        fos.flush();
        fos.close();

    }catch(IOException ioe){
        Log.e("TAG", "Stack trace is " + Log.getStackTraceString(ioe));
    }
}

我认为这可能与我使用后台服务注册我的接收器这一事实有关,因为我无法在清单中重新编写它。

知道问题可能是什么?

2 个答案:

答案 0 :(得分:0)

FileInputStream fis = MainActivity.getAppContext().openFileInput(key);

对于此行, MainActivity.getAppContext()部分似乎是您的问题。

什么是 MainActivity ?它是您的活动的一个实例吗?您无法达到此类活动,尤其是在应用关闭时。

您需要使用Application类的Application Context。

与此Application.instance()。getApplicationContext()

类似

答案 1 :(得分:0)

而不是FileInputStream fis = MainActivity.getAppContext().openFileInput(key);

你可以这样做(我们为后台服务这样做):

Context context = getApplicationContext();
FileInputStream fis = context.openFileInput(key);

您必须至少运行一次MainActivity应用程序才能创建服务并获取应用程序上下文。