Java 在长时间运行的异步任务运行时显示微调器对话框
我正在从AsyncTask执行远程http调用,我想显示一个微调器进度对话框。Java 在长时间运行的异步任务运行时显示微调器对话框,java,android,android-fragments,android-asynctask,android-spinner,Java,Android,Android Fragments,Android Asynctask,Android Spinner,我正在从AsyncTask执行远程http调用,我想显示一个微调器进度对话框。 我这样做: public class LongRunningTask extends AsyncTask<Object, Void, Void> { Context ctx; ProgressDialog prog; public LongRunningTask(){} public LongRunningTask(Context ctx) { this
我这样做:
public class LongRunningTask extends AsyncTask<Object, Void, Void> {
Context ctx;
ProgressDialog prog;
public LongRunningTask(){}
public LongRunningTask(Context ctx) {
this.ctx = ctx;
}
@Override
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);
prog.dismiss();
}
@Override
protected void onPreExecute() {
super.onPreExecute();
prog = new ProgressDialog(ctx);
prog.setTitle("bla");
prog.setMessage("BLABLA");
prog.setIndeterminate(false);
prog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
prog.show();
}
....
}
我的应用程序崩溃(没有任何堆栈跟踪…)如何实现这一点?您的
LongRunningTask
没有将上下文对象作为参数的构造函数。不仅仅是破坏你的代码是不够的compiling@Blackbelt:我只粘贴了预执行/后执行,因为构造函数只粘贴了this.ctx=ctx
我认为不允许您从线程运行异步任务!=Ui线程。AsyncTask
应该在Ui线程上创建,您可以在另一个线程上创建。@Blackbelt:即使我的代码不是知道android的人会做的(我是新手),http调用也可以工作。
new Thread(new Runnable() {
@Override
public void run() {
new LongRunningTask(getActivity()).execute();
}
}).run();