gpt4 book ai didi

android - AsyncTask 没有锁定主线程?

转载 作者:行者123 更新时间:2023-11-29 00:49:12 25 4
gpt4 key购买 nike

我正在使用以下代码来填充自定义 ListPreference 对话框。由于填充过程需要很多时间,我想在填充过程中显示一个进度对话框。

我的问题是 filler.execute() 不会阻塞 onPrepareDialogBu​​ilder 并且函数会在值被填充之前一直运行到最后导致异常...有什么想法吗?

@Override
protected void onPrepareDialogBuilder(Builder builder) {
// Load data
if (this.getEntries()==null) {
FillerTask filler = new FillerTask();
filler.execute();
}
Log.d(TAG, "Filler finished");
super.onPrepareDialogBuilder(builder);
}

这是 Filltertask 代码,基本上他会寻找每个具有填充列表的 MAIN Intent 的 Activity :

private class FillerTask extends AsyncTask<Void, Void, String[][]> {
private ProgressDialog dialog;

@Override
protected void onPreExecute() {
Log.d(TAG, "Dismiss dialog");
dialog = ProgressDialog.show(MyListPreference.this.getContext(), "", "Doing stuff...", true);
}

@Override
protected String[][] doInBackground(Void... params) {
return fill();
}

public String[][] fill() {
Log.d(TAG, "Fill started");

CREATE LISTS...

// Done
Log.d(TAG, "Fill done");
String[][] result = new String[][] {entryNames, entryValues};
return result;
}


@Override
protected void onPostExecute(String[][] result) {
Log.d(TAG, "Post execute");
MyListPreference.this.setEntries(result[0]);
MyListPreference.this.setEntryValues(result[1]);
dialog.dismiss();
}
}

最佳答案

My problem is that filler.execute() does not block onPrepareDialogBuilder and functions goes till the end before values are filled causing an exception... Any idea?

这就是 AsyncTask 背后的全部要点。 AsyncTask中的“Async”表示异步。

使用您的AsyncTask 获取您的数据。然后,在 onPostExecute() 中,显示对话框。

关于android - AsyncTask 没有锁定主线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4499900/

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