【发布时间】:2014-10-10 08:00:51
【问题描述】:
我在 OnPostExecute 开始一个新的 Activity 并调用 pDialog.dismiss() ,但是当我从新的 Activity 回到上一个 Activity 时 - 进度对话框仍在运行。
当我转移到另一项活动时,如何永久解除它?
这是我的 AsyncTask 类。
public class FindRideTask extends AsyncTask<Void, Void, Void>
{
private ProgressDialog pDialog;
@Override
protected void onPostExecute(Void result) {
if(pDialog!=null && pDialog.isShowing())
{
pDialog.dismiss();
}
Intent intent = new Intent(getApplicationContext(), FindRideBoard.class);
Bundle bundle = new Bundle();
bundle.putParcelableArrayList("Results", ridesList);
intent.putExtras(bundle);
startActivity(intent);
}
@Override
protected void onPreExecute() {
pDialog = new ProgressDialog(FindRide.this);
pDialog.show(FindRide.this, "מתחבר לשרת", "אנא המתן");
}
@Override
protected Void doInBackground(Void... params) {
s_ParseLogic = ParseLogic.getInstance();
try
{
ArrayList<ParseObject> ridesFromQuery = (ArrayList<ParseObject>)s_ParseLogic.FindRides(sourceList.getText().toString(), destinationList.getText().toString(), time_picker.getText().toString(), m_date.getText().toString());
ridesList = new ArrayList<Ride>();
for(int i = 0 ; i < ridesFromQuery.size() ; i++)
{
ParseObject obj = ridesFromQuery.get(i);
ridesList.add(new Ride((String)obj.get("Source"), (String)obj.get("Destination"), (String)obj.get("Day"),(String) obj.get("Time"), (String)obj.get("IsPermanent"), (String)obj.get("Driver"), (String)obj.get("Driver Phone"))) ;
}
}
catch(ParseException e)
{
}
return null;
}
}
【问题讨论】:
-
在 postexecute() 的意图调用之前使用
pDialog.dismiss();。 -
pDialog.dismiss();应该是您在onPostExecute()中的第一条语句 -
我以前试过这个。它仍在运行:(
-
这个 AsyncTask 是 Activity 中的内部类吗?您确定在之前的活动中没有显示任何其他进度对话框吗?复查一次
-
是的。它是活动中的内部类。这个进度对话框是我唯一拥有的,它在 AsyncTask 类中定义。
标签: android android-asynctask progressdialog