我想使用进度对话框与异步任务,我怎么能使用它。我试过了,但它在得到响应后向我显示对话框,这是我的调用函数。由于我预计我面临的问题是由于此应用程序响应 = reqClient.execute(.get();因为我还必须从此异步任务中获取返回值。因此,请参阅两个文件以进行折射
void postHttpRequest(String userId,String pass,TextView error){
RequestClient reqClient = new RequestClient(IweenTravelLoginPage.this);
String AppResponse = null;
try {
url = "";
Log.d("Http Post URL is ", url);
AppResponse = reqClient.execute().get();
String status = ValidateLoginStatus.checkLoginStatus(AppResponse);
Log.d("Status recived", status);
if(status.equals("200")){
saveInformation(userId,pass);
startingActivity();
}else{
error.setText("Incorrect UserName or Password");
}
} catch (Exception e) {
Log.e("Exception Occured", "Exception is "+e.getMessage());
}
此功能用于发送请求
public class RequestClient extends AsyncTask<String, Void, String>{
Context context;
public RequestClient(Context c) {
context = c;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected String doInBackground(String... aurl){
String responseString="";
HttpClient client = null;
try {
client = new DefaultHttpClient();
HttpGet get = new HttpGet(IweenTravelLoginPage.url);
HttpResponse responseGet = client.execute(get);
HttpEntity resEntityGet = responseGet.getEntity();
if (resEntityGet != null) {
responseString = EntityUtils.toString(resEntityGet);
Log.i("GET RESPONSE", responseString.trim());
}
} catch (Exception e) {
Log.d("ANDRO_ASYNC_ERROR", "Error is "+e.toString());
}
Log.d("ANDRO_ASYNC_RESPONSE", responseString.trim());
client.getConnectionManager().shutdown();
return responseString.trim();
}
@Override
protected void onPostExecute(String response) {
super.onPostExecute(response);
}
}
因此,请建议我该怎么做才能显示流程对话框。我尝试了堆栈溢出上的所有示例。但这一切都不适合我。请帮忙
为此,您可以在asyncTask中使用onProgressUpdate()。每次从doInBackground()执行showProgressUpdate()时都会调用它
在前面的答案的基础上,您可以通过修改listener函数来获取从Async任务返回的数据,该函数接受一个参数,该参数是返回数据
public interface OnTaskCompleted{
void onTaskCompleted(String response);
}
然后在Async任务的postExecute函数中,让它使用返回数据调用侦听器
@Override
protected void onPostExecute(String response){
//your stuff
listener.onTaskCompleted(response);
}
然后在调用Async任务的地方,您只需要实现侦听器。您可以让一个类实现侦听器或使用匿名类
OnTaskCompleted listener = new OnTaskCompleted() {
void onTaskCompleted(String response){
// We got return data from the Async Task, do stuff!
}
};
RequestClient reqClient = new RequestClient(listener);
reqClient.execute();
为了显示进度对话框,您应该在调用异步任务之前将其设置为显示,然后一旦您收到来自Aysnc任务的回调,您就可以将其关闭。
//make progressDialog a member of your class
progressDialog = new ProgressDialog(IweenTravelLoginPage.this);
progressDialog.setMessage("Loading");
progressDialog.show();
OnTaskCompleted listener = new OnTaskCompleted() {
void onTaskCompleted(String response){
// get rid of the progress dialog
progressDialog.dismiss;
// We got return data from the Async Task, do stuff!
}
};
RequestClient reqClient = new RequestClient(listener);
reqClient.execute();
你可以试试这个
extends AsyncTask<String, Void, String>{
Context context;
public RequestClient(Context c) {
context = c;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
progressDialog = new ProgressDialog(context);
progressDialog.setMessage("Loading. Please Wait");
progressDialog.setIndeterminate(false);
progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
progressDialog.setCancelable(true);
progressDialog.show();
}
@Override
protected String doInBackground(String... aurl){
String responseString="";
HttpClient client = null;
try {
client = new DefaultHttpClient();
HttpGet get = new HttpGet(IweenTravelLoginPage.url);
HttpResponse responseGet = client.execute(get);
HttpEntity resEntityGet = responseGet.getEntity();
if (resEntityGet != null) {
responseString = EntityUtils.toString(resEntityGet);
Log.i("GET RESPONSE", responseString.trim());
}
} catch (Exception e) {
Log.d("ANDRO_ASYNC_ERROR", "Error is "+e.toString());
}
Log.d("ANDRO_ASYNC_RESPONSE", responseString.trim());
client.getConnectionManager().shutdown();
return responseString.trim();
}
@Override
protected void onPostExecute(String response) {
super.onPostExecute(response);
progressDialog.dismiss();
}
}
当我单击登录按钮时,我想显示,并且移动到另一个页面需要时间。我该怎么做?
问题内容: 我正在Flask中编写一个应用程序,除了同步和阻塞之外,它的运行情况非常好。我特别有一项任务,该任务调出第三方API,该任务可能需要几分钟才能完成。我想拨打该电话(实际上是一系列电话)并使其运行。同时控制权返回给Flask。 我的看法如下: 现在,我要做的就是 运行并提供在方法返回时要执行的回调,而Flask可以继续处理请求。这是我需要Flask异步运行的唯一任务,并且我想就如何最好地
我刚刚更新了 Play!框架到版本 2.1 和 scala 到版本 2.10... 现在我的游戏!应用程序已损坏。似乎Akka API已经发生了变化。我找不到现在使用的阿卡版本,但我认为这是最后一个版本...... 我刚刚阅读了迁移指南:http://doc.akka.io/docs/akka/2.1.0/project/migration-guide-2.0.x-2.1.x.html。 我相应地
8.2 使用异步任务 注意:本节所介绍的功能要求 vim 编译包括 +job 特性。 8.2.1 简单任务体验 前文说到,Vim 的异步任务主要是针对外部命令的。那我们就先以最简单最常见的系统命 令 ls 为例,其功能是列出当前目录下的文件,若在 Windows 操作系统下或可用 dir 命令代替。 首先请在 shell 中进入一个非空目录,便于实践,并在 shell 中执行如下命令: $ ls
问题内容: 我正在尝试制作一个可以帮助我评估从Web资源下载文件的时间的应用程序。我发现了2个样本: 使用Android下载文件,并在ProgressDialog中显示进度 和 http://www.helloandroid.com/tutorials/how-download-fileimage-url- 您的设备 第二个示例显示了较小的下载时间,但是我不明白如何使用它来更新进度对话框。我认为在