我是保存和对象
"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));
}
}
我认为这可能与我使用后台服务注册我的接收器这一事实有关,因为我无法在清单中重新编写它。
知道问题可能是什么?
答案 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应用程序才能创建服务并获取应用程序上下文。