gpt4 book ai didi

安卓编程 : I cannot get data from a background thread AND show a progress dialog

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

抱歉,标题有点难懂,但我不是 100% 确定要问什么。向您展示代码并查看您是否从中理解会更容易。我在这里的另一篇文章中找到了使用进度对话框的方法,所以这基本上是添加到那篇文章中。 ( ProgressDialog not showing until after function finishes )顺便说一句,这是使用带有 android 插件的 eclipse 环境。

            final MyClass mc = new MyClass(text,info, this);
final ProgressDialog dialog = ProgressDialog.show(this, "", "Loading. Please wait...", true);

Thread t = new Thread(new Runnable()
{
public void run()
{
// keep sure that this operations
// are thread-safe!
Looper.prepare(); //I had to include this to prevent force close error

mc.doStuff();//does ALOT of stuff and takes about 30 seconds to complete... which is why i want it in a seperate thread

runOnUiThread(new Runnable()
{
@Override
public void run() {
if(dialog.isShowing())
dialog.dismiss();

}
});
}
});
t.start();

tmp = mc.getStuff();

现在的问题是 tmp 总是空的,因为 mc 还没有完成工作。所以,如果我这样做,它会完成所有操作,但不会显示进度对话框..

            t.start();
while(t.isAlive());//noop
tmp = mc.getStuff();

任何想法或想法将不胜感激!

最佳答案

在您的第二次尝试中,您让主线程等待新线程完成。

runOnUiThread 调用中的 runnable 是您要执行的操作 tmp = mc.getStuff();然后在 mc 完成 doStuff() 后在主线程上执行。

但除此之外,请查看 blindstuff 评论的链接,它简化了线程。

关于安卓编程 : I cannot get data from a background thread AND show a progress dialog,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8051682/

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