感觉真的很愚蠢,不知怎的,我有一种感觉我应该把“这个”作为“上下文”的论据,但老实说这整个概念对我来说是新的,因为它让我感到困惑我宁愿在我开始无休止地寻找语法错误之前,先了解100%是什么以及为什么。
几天前我问了一个问题,关于如何使用文件输入/输出流将类对象的ArrayList的内容写入应用程序启动时要检索的文件。基本上,我想保存输入的值。我对我的代码感到非常自信,直到我意识到在调用我的保存和检索方法时我必须传递一个Context。就在意识到我不知道背景是什么打击了我......所以是的。
这些是我的方法: 创建文件(我猜?):
private static void updatePickThreeList(Context mC){
FileOutputStream stream = null;
try{
stream=mC.openFileOutput(PICK_THREE_NUMBERS,Context.MODE_PRIVATE);
ObjectOutputStream dout = new ObjectOutputStream(stream);
dout.writeObject(pickThreeNumbers);
stream.getFD().sync();
stream.close();
dout.flush();
}catch(IOException e){
e.printStackTrace();
}
}
检索数据(我希望):
private static void getPickThreeList(Context mC){
FileInputStream stream = null;
try{
stream=mC.openFileInput(PICK_THREE_NUMBERS);
ObjectInputStream din = new ObjectInputStream(stream);
pickThreeNumbers = (ArrayList<PickThreeNumbers>) din.readObject();
stream.getFD().sync();
stream.close();
din.close();
}catch(IOException e){
e.printStackTrace();
}catch(ClassNotFoundException e1){
e1.printStackTrace();
}
}
我假设我可以调用第一个方法将ArrayList保存到文件,然后调用第二个方法简单地将保存的值加载到数组中。顺便说一下,使用的数组和其他值是:
static List<PickThreeNumbers> pickThreeNumbers = new ArrayList();
final static String PICK_THREE_NUMBERS="pick_three_numbers";
因此,根据我对原始问题的回答,这两个方法都需要在上下文中传递,而Java对于获取该上下文非常坚定(如图),所以当我调用updatePickThreeList(Context)时;究竟什么是“上下文”?
提前致谢 - 我是一个非常欣赏的编程菜鸟。
答案 0 :(得分:2)
所以当我调用updatePickThreeList(Context);时,究竟是什么作为“上下文”?
扩展Context
的某个类的实例。根据您调用此代码的位置,可能是Activity
或Service
。
BTW,使用静态数据成员时请小心,这样就不会引入内存泄漏。
另外,请在后台线程上执行磁盘I / O(例如AsyncTask
或IntentService
)。