2011-07-25 14 views
0

AsyncTaskを定期的にファイルから読み込もうとしています。このファイルには、読みたい各行の間にハードコードされた "EOL"タイプセパレータがあります。私の現在の実装では、を使って行の最初の間隔を読み取ってEOLマーカーに近づけてから、publishProgress()でUIを更新し、一定の時間待機した後、次のテキスト間隔に移動する必要があります。Android:AsyncTaskと連続ファイルIO

私の質問は次のとおりです:AsyncTaskを使用している間、次のテキスト間隔に移動するにはどうしたらいいですか?私はBufferedReaderに毎回new()を呼び出しておかなければならないようですが、それはファイル内の自分の位置をリセットします。私が使用できる別のライブラリがありますか? X秒ごとにライブソースからストリーミングされているデータをシミュレートしようとしているので、AsyncTaskを保持する必要があることに注意してください。

私は必要に応じていくつかのコードを提供できますが、これは主に上位レベルの設計上の質問です。

答えて

1

バイト数を保持する長い変数を保持し、スキップ(long bytecount)メソッドを使用します。

またAsyncTaskをサブクラス化し、メンバーフィールドとしてそれを

+0

ありがとう、3つの答えはすべて実行可能なソリューションですが、あなたのものが最も簡潔でした。 –

1

を静的BufferedReaderのを与えるAsyncTaskは「全体」の作業ではなく、「部分的」タスクを完了に向けて配向されています。このようにすることは可能ですが、それほど簡単ではないかもしれません。 AsyncTaskをより効果的に使用するには、少し異なるデザインを使用することをお勧めします。 BufferedReaderをファイルの状態の一部として保持し、AsyncTaskに渡して最後の読み取りと次の読み取りの差のみを計算します。

1

はAsynTaskのあなたのdoInBackgroundの実装でループを持っているし、各ループの最後(リーチEOL)でUIを更新するためにActivity.runOnUiThread(Runnable)を呼び出します。あなたがバックグラウンドで離れることは決してありませんし、あなたの立場への言及を失う必要はありません。

もう1つの方法は、Handlerです。

関連する問題