簡體   English   中英

什么作為Context參數傳遞給文件I / O方法?

[英]What to pass into file I/O method as Context argument?

感覺真的很愚蠢,不知怎的,我有一種感覺,我應該把“這個”作為“上下文”的論據,但說實話,這整個概念對我來說是新的,因為它讓我感到困惑,我寧願知道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)時,究竟是什么進入“背景”?

提前謝謝 - 我是一個非常感激的編程菜鳥。

所以,當我調用updatePickThreeList(Context);時,究竟是什么作為“上下文”?

擴展Context的某個類的實例。 根據您調用此代碼的位置,可能是ActivityService

順便說一下,使用靜態數據成員時請小心,這樣就不會引入內存泄漏。

另外,請在后台線程(例如, AsyncTaskIntentService )上執行磁盤I / O.

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM