我在我的应用程序中有登录的自定义对话框。我还为它添加了进度条并使其无形。当用户点击“按钮”时,我调用AsyncTask来处理http登录。我从AsyncTask控制进度条。一切看起来都不错,但是当AsyncTask运行时 - 对话框完全响应。我可以更改字段,我可以单击按钮等。我看到3个选项:
在运行asynctask之前,我将禁用所有控件。但是我怎么知道什么时候完成?我可以使用回调吗?
创建登录窗口活动并显示进度对话框。
请告诉我处理此方案的正确方法
这里是异步任务。我试图让它通用,我传递url和body并返回http响应:
private class RESTService extends AsyncTask<String, Integer, String>
{
//TODO: Add text to progress bar and add custom artwork
ProgressBar progress;
Dialog dialog;
Activity activity;
public RESTService(ProgressBar p, Dialog d, Activity a)
{
progress = p;
}
@Override
protected String doInBackground(String... stuff)
{
String url = stuff[0];
String post = stuff[1];
try
{
Thread.sleep(15000);
} catch (InterruptedException e)
{
e.printStackTrace();
}
return "done";
}
@Override
protected void onPreExecute()
{
super.onPreExecute();
if (dialog != null)
{
}
if (progress != null)
{
progress.setVisibility(View.VISIBLE);
}
}
@Override
protected void onPostExecute(String s)
{
super.onPostExecute(s);
if (progress != null)
{
progress.setVisibility(View.GONE);
}
}
}
答案 0 :(得分:0)
我最终做了什么 - 弹出AlertDialog,为AsyncTask侦听器创建接口,并在任务完成时调用父调用者。