[英]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
的某個類的實例。 根據您調用此代碼的位置,可能是Activity
或Service
。
順便說一下,使用靜態數據成員時請小心,這樣就不會引入內存泄漏。
另外,請在后台線程(例如, AsyncTask
或IntentService
)上執行磁盤I / O.
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.