私は加速度センサーとジャイロスコープのデータをテキストファイルに記録するAndroidアプリを開発しています。ほとんどのチュートリアルでは、2つのテキストファイルを作成し、1秒間に50回ずつ開閉する方法を使用します。すなわち:ファイルへの書き込みに最適な方法(毎秒50回)
private static void writeToFile(File file, String data) {
FileOutputStream stream = null;
try {
stream = new FileOutputStream(file, true);
stream.write(data.getBytes());
} catch (FileNotFoundException e) {
Log.e("History", "In catch");
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
try {
stream.close();
} catch (IOException e) {
e.printStackTrace();
}
すなわち、すべてのSensorEventに、あなたはその後、20ミリ秒後に再びそれを開き、そのファイルを閉じて、値を書き込む、ファイルを開きます。
すべてがうまくいっているようですが、これを行うより良い方法があるかどうか疑問に思っていましたか?私は、ストリームが既に開いているかどうか、そして別のwriteToFile ifフラグがtrueに設定されているかどうかを言うbooleanフラグを使って試しましたが、明らかにfileOutputStreamは20ミリ秒の時間枠で閉じることがあり、 。
私の質問は次のとおりです。ファイルを何回も開いたり、書き込んだり閉じたりするのに必要なシステムリソースはいくつですか?それはいいですか、私は心配すべきではありませんか、または物事を行う良い方法がありますか?継続的なセンサーロギングはバッテリーの寿命を犠牲にしているので、可能な限り効率的に処理したいと考えています。
ありがとうございました
'FileOutputStream'はバッファリングしないので、フラッシュする必要はありませんが、バッファを処理する何か、つまりその周囲の' BufferedOutputStream'を使用する必要があります。そして、それ自体を流させてください。 – EJP
ありがとう、情報をありがとう! –