MyBookshelf
Activity
非同期のダウンロードおよび解凍プロセスによって呼び出されるインターフェースを拡張および実装します。
非同期ダウンロード プロセスはonBookDownloadPercent(float)
、インターフェイスから定期的に呼び出します。マイ アクティビティの定義には次が含まれます。
public class MyBookshelf extends Activity implements BookDownloadListener {
private ProgressBar mProgress;
// .......
// .......
@Override
public void onBookDownloadPercent(float _percent_finished) {
final float final_percent = _percent_finished;
runOnUiThread(new Runnable() {
public void run()
{
DebugLog.d(TAG, "onBookDownloadPercent " + Float.toString(final_percent));
mProgress.setProgress((int) final_percent);
}
});
}
}
LogCat では、私の関数DebugLog.d
は、UI スレッドが呼び出していることを保証しますmProgress.setProgress()
。
09-30 11:37:06.698: DEBUG/MyBookshelf(2069): onBookDownloadPercent 0.0014221431; thread 1
09-30 11:37:07.288: DEBUG/MyBookshelf(2069): onBookDownloadPercent 1.0004596; thread 1
09-30 11:37:07.838: DEBUG/MyBookshelf(2069): onBookDownloadPercent 2.0001705; thread 1
09-30 11:37:08.318: DEBUG/MyBookshelf(2069): onBookDownloadPercent 3.0014038; thread 1
09-30 11:37:09.098: DEBUG/MyBookshelf(2069): onBookDownloadPercent 4.0002813; thread 1
09-30 11:37:09.468: DEBUG/MyBookshelf(2069): onBookDownloadPercent 5.0003366; thread 1
09-30 11:37:09.818: DEBUG/MyBookshelf(2069): onBookDownloadPercent 6.0003924; thread 1
09-30 11:37:10.158: DEBUG/MyBookshelf(2069): onBookDownloadPercent 7.0004926; thread 1
09-30 11:37:10.588: DEBUG/MyBookshelf(2069): onBookDownloadPercent 8.000748; thread 1
09-30 11:37:10.938: DEBUG/MyBookshelf(2069): onBookDownloadPercent 9.000215; thread 1
09-30 11:37:11.368: DEBUG/MyBookshelf(2069): onBookDownloadPercent 10.00017; thread 1
非同期解凍タスク用の同様のインターフェイスがあります。
@Override
public void onBookUnzipPercent(float _percent_finished) {
final float final_percent = _percent_finished;
runOnUiThread(new Runnable() {
public void run()
{
DebugLog.d(TAG, "onBookUnzipPercent " + Float.toString(final_percent));
mProgress.setProgress((int) final_percent);
}
});
}
最初にMyBookshelf
、最初の本をダウンロードする非同期タスクを呼び出し、進行状況バーが正しく更新されます (0 から 100%)。
次にMyBookshelf
、最初の本を解凍する非同期タスクを呼び出し、進行状況バーが正しく更新されます (0 から 100%)。
第三に、本を読むように呼び出しMyBookshelf
、それ自体を呼び出します。startActivity(nextIntent)
finish()
4 番目に、本を読んだ後、MyBookshelf に戻ります。
nextIntent = new Intent(getBaseContext(), MyBookshelf.class);
次の本をダウンロードすると問題が発生します。ダウンロードが行われ、LogCat が更新をログに記録しますが、進行状況バーは空白の灰色でのみ表示され、次の本をダウンロードするときも解凍するときも更新されません。スレッド 1 が実際に実行されていることを LogCat で確認しました。onBookDownloadPerecent Runnable
更新されたときに表示されるように、mProgress
戻ってきたときに何か面白いことをする必要がありますか?MyBookshelf