gpt4 book ai didi

android - 返回 Activity 后 ProgressBar 未正确更新

转载 作者:行者123 更新时间:2023-11-30 04:31:43 25 4
gpt4 key购买 nike

MyBookshelf 扩展 Activity 并实现一个由异步下载和解压缩过程调用的接口(interface)。

异步下载过程定期从接口(interface)调用 onBookDownloadPercent(float)。我的 Activity 定义包括:

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

我有一个类似的异步解压任务接口(interface):

@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()

四、看完书回到MyBookshelf:

nextIntent = new Intent(getBaseContext(), MyBookshelf.class);

当我下载下一本书时出现问题:下载发生,LogCat 记录更新,但进度条仅显示为空白灰色,并且在下载或解压缩时更新下一本书。我已经通过 LogCat 确认线程 1 确实正在通过 onBookDownloadPerecent Runnable

运行

返回 MyBookshelf 时是否需要对 mProgress 做一些有趣的事情,以便它在更新时显示?

最佳答案

我的解决方案是使 mProgressBar 静态化:

public class MyBookshelf extends Activity implements BookDownloadListener {

static 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);
}
});
}
}

关于android - 返回 Activity 后 ProgressBar 未正确更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7605624/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com