2016-10-21 11 views
0

私は自分のアプリに位置情報サービスを持っています。デバッグの目的で、私は "新しい座標"、 "サービスonDestroy"、 "サービスonStartCommand"、 "バックエンドに送信座標"などのいくつかのイベントを(テキストファイルに)記録したいと思います。 しかし、私は問題に直面しています。ログファイルは毎日350以上の新しい行を取得します.3日で私は1000行のファイルを持っています。
私の考えは、最後の日に3(またはその場合はN)を維持し、3日以上前に書き込まれたコンテンツを削除することです。3日間のログを維持する - Android

しかし:古い行がある場合

  • 私はすべてにチェックする必要はありませんが、私は消去し、3日ごとに発射するアラームを設定する必要はありません
  • を削除する書き込み古いデータ。

この状況を処理するもう1つの効率的な方法が分かっていますか教えてください。

答えて

2

テキストファイルにインデックスを作成する方法がなくても、ファイルの各行を読み取って(特定の点まで)、解析して日付を見つけることなく解決する方法はありません。

ファイルを保存しないでください。データベースを保管してください。列の1つを「作成時間」にする。その後、作成した時間があるしきい値より古い行を簡単に削除できます。

getContentResolver().delete(
     yourUri, 
     "created_time < ?", 
     new String[] { System.currentTimeIllis() - Integer.toString(TimeUnit.DAYS.toMillis(3) 
    ); 

千行のテキストファイルが何もありません、注意点として

(か何かは、あなた自身のSQLを...テストしてください)。あなたがそれを頻繁にやっていない限り、それを読み、パースすることは重要ではありません。 1日1回ファイルを読み込んでトリミングしても問題ありません。

もう1つの解決策は、ファイル(log - > log.1、log.1 - > log.2、...、log.n-1 ---> log.n)をローテーションすることです。もちろん、これは特定のファイルのサイズに厳しい制限を設定しません。

+0

うわー、最も効率的で簡単な方法!ありがとう、ジェフリー! :) – mapo

関連する問題