java - 将什么作为 Context 参数传递到文件 I/O 方法中?

标签 java android

感觉真的很愚蠢,不知何故,我有一种感觉,我应该将“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的某个类的实例。根据您调用此代码的位置,该代码可能是 ActivityService

顺便说一句,使用静态数据成员时请小心,以免引入内存泄漏。

此外,请在后台线程上执行磁盘 I/O(例如 AsyncTaskIntentService)。

关于java - 将什么作为 Context 参数传递到文件 I/O 方法中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18421913/

相关文章:

java - 如何更改级联上的特定列值

java - 我可以扩展一个类并覆盖封闭的枚举类型吗?

java - 是否可以创建一个包含 arraylist 对象的常规数组?

java - 正则表达式匹配版本号零次或多次

android - 在android中获取wifi ip的位置

java - 如何在模型- View - Controller 中为模型设计接口(interface)?

android - 从应用程序内部更改 Root设备的系统设置

android - Gradle 找不到 com.android.databinding :dataBinder:1. 0-rc0

android - Firebase 显示错误的用户数量(因为我的应用未发布)

android - 自动字符串资源翻译