gpt4 book ai didi

android - 尽管有 AsyncTask,但不确定的 ProgressBar 卡住了(不旋转)

转载 作者:行者123 更新时间:2023-11-30 03:39:37 24 4
gpt4 key购买 nike

我构建了一个应用程序,我使用 androidplot 以选项卡式布局(使用 ActionBar 选项卡)显示多个图表。图书馆

在每个选项卡上,我在一个 fragment 中显示一个图表。由于切换选项卡时渲染速度非常慢(我有一系列 3000/4000 值),因此我尝试使用 AsyncTask 将图形生成放在后台线程中。

它工作正常,但我注意到如果我使用不确定的 ProgressBar,指示器不会旋转但会保持静止,这意味着有一些进程阻塞了 UI 线程。 (我的猜测)。

关于如何改进我的申请,您有什么建议吗?我想将 ProgressBar 显示为加载指示器而不是静止文本

这是 AsyncTask 代码,其中我最终使用“正在计算...”消息而不是 ProgressBar 作为解决方法:

private class AsyncPlotTask extends AsyncTask<XYPlot, Void, Boolean> {

@Override
protected void onPreExecute() {

//show loading message only
loading.setVisibility(View.VISIBLE);
dataContainer.setVisibility(View.GONE);

}

@Override
protected Boolean doInBackground(XYPlot... plot) {

boolean success = true;

plot[0].addSeries(dataSeries, dataSeriesFormat);

return success;
}

@Override
protected void onPostExecute(Boolean result) {

//hide loading message and show graph
loading.setVisibility(View.GONE);
dataContainer.setVisibility(View.VISIBLE);

}
}//AsyncPlotTask

最佳答案

这对我来说是这样的:

默认情况下,Androidplot 使用主线程进行渲染,这对于大多数具有几十个点的图来说都很好,但是对于包含几千个点的图,正如您所经历的那样,这需要时间。当主线程参与渲染绘图时,UI 不会更新 - 这包括更新进度条。

将绘图设置为使用背景模式渲染应该可以解决问题。如果您使用的是 Androidplot 0.5.1 或更高版本,您可以通过将其添加到绘图的 xml 来启用后台渲染线程:

renderMode="use_background_thread"

尼克

关于android - 尽管有 AsyncTask,但不确定的 ProgressBar 卡住了(不旋转),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16011268/

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