2016-05-18 3 views
0

私は簡単なTo-doリストアプリで作業していますが、内部ストレージからデータを読み書きしようとしています。私は、これらの読み取り/書き込みメソッドがいつ呼び出されるべきかを理解しようとしています。Android - 内部ストレージにデータを保存する

アクティビティクラスにはonCreate()メソッドがあり、これは私のreadメソッドにとって妥当な場所になりますが、私はwriteメソッドをどこで呼び出すべきですか?

私はアプリは/終了を閉じたときに、それを呼び出すようにしたいので、私はonDestory()は良い場所であると仮定と思いますが、私はonDestroy()は、データ記憶操作のための良い場所ではないかもしれないと私はonStop()を使用する必要があることを聞きました。

ヘルプやアイデアはありますか?

答えて

1

Activity LifecycleのAndroidデベロッパーガイドの表に従えば、onPause()(HONEYCOMB以前のデバイスの場合)またはonStop()の後に、いつでもアプリがシステムによって強制終了される可能性があります。したがって、これらのメソッドにデータを書き込んで、何も失われないようにしたいと思うかもしれません。したがって、新しいデバイス(APIレベル11以上)の場合、onStop()は問題ありません。アプリを古いデバイスでも実行する場合は、onPause()が最適です。

+0

データを書き込むためにonStop()を使用すると、onCreate()またはonStart()の記憶域から読み取る方が良いでしょうか? – baki1995

+0

に依存します。データを外部から変更できる場合は、これを 'onStart()'に入れる必要があります。さもなければ、 'onCreate()'はうまくいくはずです。あなたのアプリがシステムによって殺された場合、アプリケーションが再び呼び出されたときに 'onCreate()'が呼び出されます。システムによって殺されていない場合、以前に読み込まれたデータはまだ読み込まれているはずですので、再度読み込む必要はありません。 (データが外部から変更されない限り、この場合、onStart()よりも頻繁に読む必要があるかもしれません。例えば、ユーザボタンを指定したり、定期的に変更をチェックしたりしてください) – urps

1

アプリケーションライフサイクルによって異なります。

This Picture

そしてThisを参照してください。

onStop()は、ユーザーがホームボタン(ハードキー)を押したときに呼び出されます。

メモリが不足していたり​​、別の理由がある場合は、Android Memory Managerがアプリを瞬時に終了させ、onDestory()は決して呼び出されません。

あなたがしなければならないことは、データを保存するためのボタンを作ることです。もちろん、onStop()ルーチンを保存してください。

+0

ストレージonStop()を使用してデータを書き込むと、onCreate()またはonStart() – baki1995

-1

これは単なるサンプルコードです。しかし、あなたはその考えを得る。以下のコードを実装するカスタムメソッドを作成し、 "onClick"などのイベントで呼び出します。

File file; 
    FileOutputStream strem = null; 
    String line = "Hey this is my name"; 
    try { 
     file = new File("sdcard/newFile.txt"); 
     strem = new FileOutputStream(file); 
     byte[] bytes = line.getBytes(); 
     strem.write(bytes); 
    } catch (FileNotFoundException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } finally { 
     try { 
      strem.close(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
関連する問題