Java 从活动调用时,另一个AsyncTask类中的ProgressDialog未显示

Java 从活动调用时,另一个AsyncTask类中的ProgressDialog未显示,java,android,android-asynctask,progressdialog,Java,Android,Android Asynctask,Progressdialog,我有一个名为RestClient的类,它从我的web服务获取一些信息,然后返回,我试图在访问internet时运行一个进度对话框。因为我在不止一个地方使用这个类,所以我不会在活动中使用它。这是我的RestClient类: 问题是我的ProgressDialog从未显示。我已经尝试过使用getParent、getApplication和getApplicationContext代替AccessWebserviceActivity,但都没有成功。有人知道发生了什么,我该怎么办吗?您还没有创建进度对话

我有一个名为RestClient的类,它从我的web服务获取一些信息,然后返回,我试图在访问internet时运行一个进度对话框。因为我在不止一个地方使用这个类,所以我不会在活动中使用它。这是我的RestClient类:


问题是我的ProgressDialog从未显示。我已经尝试过使用getParent、getApplication和getApplicationContext代替AccessWebserviceActivity,但都没有成功。有人知道发生了什么,我该怎么办吗?

您还没有创建进度对话框,请尝试此操作

ProgressDialog dialog;

 @Override
    protected void onPreExecute() {
        dialog= new ProgressDialog(context);
        dialog.setMessage("on Progress");
        dialog.show();
        super.onPreExecute();
    }
你需要打电话

dialog = ProgressDialog.show(context, "Buscando seu Produto","Por favor, espere um momento...",true ,false);
移除

 dialog.show();
也把你的对话。解散;onPostExecute中的方法。此dialog.dismise方法在catch块中很好,但如果在try块中调用此方法,它的用途是什么。一旦您调用此异步任务,它将删除进度对话框

删除该声明。你已经:

restClient.execute();
这样就可以了


应该在onPostExecute中处理doInBackground的结果。它不能在onCreate中处理或检索。

在对线程和进程进行了大量研究之后,我发现我必须封装我在创建之后拥有的所有代码 RestClient.execute在

new Threadnew Runnable{public void run{//My code}}

因此,代码的执行和WebService查询都发生在后台

编辑:


即使创建新线程有效,也不建议这样做!正确的做法是创建另一个类,该类扩展AsyncTask以执行作业。

您是否已从doInBackground方法中的try块中删除disclose方法?如果你得到任何错误,然后粘贴,以便有人可以帮助你。是的,我有。我之所以把它放在那里,是因为有人说这可能是问题之一,但没有奏效,我得到了一个I/编舞:跳过了126帧!应用程序可能在其主线程上做了太多的工作。为什么要这样做?2050年;AsyncTask的doInBackground在后台工作,并在UI上显示对话框。阅读本文我有这个UI线程。睡眠等待我的后台任务结束。我在我的申请中使用了它的返回,如果我没有这个中断,就会抛出一个空例外。请不要否定我的问题。不是那么简单。这个进度条无论如何都不会出现。我没有做错任何事,兄弟,我很惊讶为什么我的答案对你不起作用。没关系。我尝试了每个博客和每个解决方案所说的一切,但都没有成功;不能这样做,我在构造函数中对这个字符串做了一些修改。你能告诉我你的AsyncTask类是你的Activity类的子类还是AsnctaskClass有不同的包吗?@AmeerHamza,它不是我的Activity的子类,因为我在其他Activity中使用它,但它不在我的Activity所在的包中。
 dialog.show();
returnFromExecute = restClient.get();
restClient.execute();