2012-02-07 14 views

答えて

2

原因は、コードがファイルを閉じておらず、システムのファイルハンドルが不足しているためです。必要がなくなったときにすべてのストリームが閉じられることを保証するコーディングパターンを使用して、常にファイルを使用する必要があります。ここでは典型的なパターンです:

InputStream is = null; 
try { 
    is = new FileInputStream(myFile); 
    // read stuff from is 
} finally { 
    if (is != null) { 
     try { 
      is.close(); 
     } catch (IOException e) { 
      Log.w(LOG_TAG, "Exception raised when closing file", e); 
     } 
    } 
} 

trycatch句を持つことができます。 finally句のtry/catchの理由は、外側のtryブロックで発生した例外をファイルを閉じないようにする例外を防止するためです。

プログラマは通常、データがファイルに確実に届くようにファイルを閉じるために注意を払うため、ファイルへの書き込みは問題になりません。しかし、そこには同様のパターンを守らなければなりません。

+0

しかし、問題は自分のコードで従来のファイル処理を使用していないことです。私が使用したのは、共有設定です。私は試しにそれらをラップする必要がありますか? –

+0

@ JawadAmjad - ファイルを開く可能性のあるサードパーティのライブラリを使用していますか?任意のネットワーク接続ですか?任意のデータベース? –

+0

はい私は使用していますが、クラッシュするアクティビティには含まれていません。エラーが発生した主なゲームシーンMainMenuでライブラリを使用しました。 –

関連する問題