gpt4 book ai didi

java - Android Dialog 和 AsyncTask 导致 UI 卡住

转载 作者:行者123 更新时间:2023-11-29 10:18:12 24 4
gpt4 key购买 nike

因此,在我的对话框中,我有一个按钮可以启动 Asynctask 下载程序以从我的服务器获取一些文件;这很好用。但是,我想关闭当前的对话框并在单击按钮时显示 ProgressDialog。我将如何解决这个问题?

目前,如果我单击按钮(我的对话框中的一个元素),整个 UI 会在下载程序从服务器下载文件时卡住。下载器完成任务后,将显示进度对话框。

我的代码看起来像这样

MainActivity{

Dialog dialog;
ProgressDialog progress;

onCreate(){
dialog = new Dialog(this);
progress = new ProgressDialog(this);
dialog.setContentView(Some View Resource With My Button);
someMethod();
dialog.show();
}

someMethod(){
Button button = (Button) dialog.findViewById(resource of button);
button.setOnClickListener(new OnClickListener(){

onClick(){
dialog.dismiss();
progress.show();
new DownloaderAsyncTask(progress).execute().get();
}

//go to another activity when download finished

});
}

private class DownloaderAsyncTask extends AsyncTask<Void, Void, Void>{

ProgressDialog progress;

DownloaderAsyncTask(ProgressDialog progress){
this.progress = progress;
}

doInBackGround(){
//Downloading
}

onPostExecute(){
//Kill connection
this.progress.dismiss();
}

}

}

谢谢。如果你们需要任何其他信息,请告诉我。

最佳答案

new DownloaderAsyncTask(progress).execute().get();

我真的不知道为什么 AsyncTaskget() 方法 - 它基本上将异步过程变成同步过程,因为它会阻塞并等待结果.这就是 UI 卡住的原因。

如果您想等待下载程序完成然后再做其他事情,这就是 onPostExecute(...) 的用途。

关于java - Android Dialog 和 AsyncTask 导致 UI 卡住,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12377730/

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