0

感觉真的很愚蠢,不知何故我有一种感觉,我应该将“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); 时,究竟是什么作为“上下文”进入?

在此先感谢 - 我是一个非常欣赏编程的菜鸟。

4

1 回答 1

2

所以当我调用 updatePickThreeList(Context); 时,“上下文”到底是什么?

扩展的某个类的实例Context。根据您调用此代码的位置,可能是 aActivity或 a Service

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

AsyncTask另外,请在后台线程(例如,或IntentService)上进行磁盘 I/O 。

于 2013-08-24T18:47:33.847 回答