感觉真的很愚蠢,不知何故,我有一种感觉,我应该将“this”作为“Context”的参数传递,但老实说,这整个概念对我来说是新的,而且我宁愿感到困惑在我开始无休止地寻找语法错误之前,100% 知道什么和为什么。
几天前我问了一个问题,关于如何使用文件输入/输出流将类对象的 ArrayList 内容写入文件,以便在应用程序启动时检索。基本上,我想保存输入的值。我对我的代码非常有信心,直到我意识到在调用我的保存和检索方法时必须传递上下文。就在那时我意识到我不知道上下文是什么让我震惊......所以是的。
这些是我的方法: 创建文件(我猜?):
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); 时,“上下文”到底是什么?
提前致谢 - 我是一位非常欣赏的编程菜鸟。
最佳答案
so when I call updatePickThreeList(Context);, what exactly goes in as the "Context"?
扩展Context
的某个类的实例。根据您调用此代码的位置,该代码可能是 Activity
或 Service
。
顺便说一句,使用静态数据成员时请小心,以免引入内存泄漏。
此外,请在后台线程上执行磁盘 I/O(例如 AsyncTask
或 IntentService
)。
关于java - 将什么作为 Context 参数传递到文件 I/O 方法中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18421913/