gpt4 book ai didi

android - 用于显示对话框的 AsyncTask

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

如何使用 AsyncTask 类在执行任务时显示对话框???

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

@Override
protected void onPreExecute() {
ProgressDialog.show(???, null, null);
super.onPreExecute();
}
@Override
protected Void doInBackground(Void... params) {
// TODO Auto-generated method stub
return null;
}

}

最佳答案

假设 TestAsyncTaskActivity 的内部类,那么您可以使用 Activity 名称 .this 来获取上下文。如果 TestAsyncTask 不是内部类,那么您需要将 Activity 的实例传递到构造函数中,以便您可以将其作为 Context 提供给 ProgressDialog.show()方法。

下面是内部类方法的一个例子:

class MyActivity extends Activity {
//Activity Lifecycle methods

class TestAsynTask extends AsyncTask<Void, Void, Void> {
ProgressDialog dialog;

@Override
protected void onPreExecute() {
dialog = ProgressDialog.show(MyActivity.this, "title", "message");
super.onPreExecute();
}

@Override
protected Void doInBackground(Void... params) {
//very long computation...
return null;
}

@Override
protected void onPostExecute(Void void) {
dialog.cancel();
}
}
}

您会注意到,您应该将 ProgressDialog 保存到 onPreExecute() 方法中的一个实例变量中,然后调用 cancel()它在 onPostExecute() 方法中。

另一种方法看起来很相似:

class MyActivity extends Activity {
//Activity Lifecycle methods


}

class TestAsynTask extends AsyncTask<Void, Void, Void> {
ProgressDialog dialog;
MyActivity activity;

TaskAsynTask(MyActivity activity) {
this.activity = activity;
}

@Override
protected void onPreExecute() {
dialog = ProgressDialog.show(activity, "title", "message");
super.onPreExecute();
}

@Override
protected Void doInBackground(Void... params) {
//very long computation...
return null;
}

@Override
protected void onPostExecute(Void void) {
dialog.cancel();
}
}

关于android - 用于显示对话框的 AsyncTask,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10722434/

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