0

本当にばかげているように感じ、どういうわけか、「コンテキスト」の引数として「これ」を渡すことになっているような気がしますが、正直なところ、この概念全体は私にとって新しいものであり、混乱しているのと同じくらい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 をファイルに保存し、次に 2 番目のメソッドを呼び出して、保存された値を配列にロードすることができると仮定します。ちなみに、使用される配列とその他の値は次のとおりです。

static List<PickThreeNumbers> pickThreeNumbers = new ArrayList();
final static String PICK_THREE_NUMBERS="pick_three_numbers";

したがって、私の最初の質問への回答によると、これらのメソッドは両方ともコンテキストで渡す必要があり、Java はそのコンテキストを取得することにかなり固執しています (図を参照)。 「コンテキスト」として入る?

前もって感謝します-私は非常に感謝しているプログラミングの初心者です。

4

1 に答える 1

2

updatePickThreeList(Context); を呼び出すと、「コンテキスト」として正確に何が入るのでしょうか?

を拡張するクラスのインスタンスContext。このコードを呼び出す場所に応じて、ActivityまたはService.

ところで、静的データ メンバーを使用する場合は注意してください。メモリ リークが発生しないようにしてください。

AsyncTaskまた、バックグラウンド スレッド (または など)でディスク I/O を実行してくださいIntentService

于 2013-08-24T18:47:33.847 に答える