gpt4 book ai didi

android - 当异步任务在后台线程中运行时,单击 UI 后台中的任何按钮时应用程序崩溃

转载 作者:行者123 更新时间:2023-11-30 02:43:15 24 4
gpt4 key购买 nike

我正在从外部服务器获取数据并将其填充到 android 的 ListView 中。在异步任务期间,我在 UI 线程中显示“加载”对话框。UI 还在后台显示两个按钮。单击这些按钮时,ListAdapter 附加到显示 ListView 和数据。但由于后台线程仍在运行,因此列表适配器为空且不包含任何数据,因此在单击这些按钮时应用程序崩溃并显示空指针异常。那么如何在后台线程运行时使后台 UI(“加载对话框”下的 UI)无响应?或者有什么其他的解决办法吗?

最佳答案

如果您想在运行 AsyncTask 时停止与 UI 的所有交互,请显示 ProgressDialog 并使其不可取消。像这样的东西:

public class MainActivity extends Activity {

private Context mContext;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mContext = this;
}

class MyAsyncTask extends AsyncTask<Void, Void, Void> {

private ProgressDialog mProgress;

@Override
protected void onPreExecute() {
super.onPreExecute();
// Show ProgressDialog
mProgress = new ProgressDialog(mContext);
mProgress.setCancelable(false);
mProgress.setCanceledOnTouchOutside(false);
mProgress.setTitle("Fetching data");
mProgress.show();
}

...

@Override
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);
// Hide ProgressDialog when done loading
mProgress.dismiss();
}
}
}

这样,当 doInBackground 运行时,您的 UI 将不可点击。

关于android - 当异步任务在后台线程中运行时,单击 UI 后台中的任何按钮时应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25465985/

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