当 Activity 为 launchMode="SingleTask" 时,进度对话框未显示 2 次
Progress Dialog is not showing 2 times when Activity is launchMode="SingleTask"
你好,当 Activity 有 launchMode="SingleTask"
.
时,我遇到 ProgressDialog 没有第二次显示的问题
我必须将 Activity 作为 SingleTask。我第一次单击按钮时,对话框正在显示,但是当我关闭 activity 并再次启动它并单击按钮时,ProgressDialog
不再显示。
我的代码:
private class FakeTask extends AsyncTask<Integer, Void, Void>{
private FakeCallBackListener mListener;
FakeTask(FakeCallBackListener listener){
mListener = listener;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
mProgressDialog = new ProgressDialog(mContext);
mProgressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
mProgressDialog.setIndeterminate(true);
mProgressDialog.setMessage(mContext.getString(R.string.processing_data));
mProgressDialog.setCancelable(false);
mProgressDialog.setInverseBackgroundForced(true);
if (!((Activity)mContext).isFinishing()){
mProgressDialog.show();
}
}
@Override
protected Void doInBackground(Integer... params) {
try {
Thread.sleep(params[0]);
} catch (InterruptedException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);
mProgressDialog.dismiss();
}
}
当单击按钮时,我只是调用它:
new FakeTask(listener).execute(delay);
在具体的清单中 Activity
我有:
android:launchMode="singleTask"
有什么建议吗?我知道,由于 Activity 实际上并未被销毁,因此将上下文传递给死对话框。但是我如何修复对话框以使其每次都显示?
我认为您在访问 mContext
时遇到问题。
为什么不将其作为参数传递给 FakeTask 构造函数?
private FakeCallBackListener mListener;
private Context mContext;
FakeTask(Context context, FakeCallBackListener listener) {
mContext = context;
mListener = listener;
}
你好,当 Activity 有 launchMode="SingleTask"
.
我必须将 Activity 作为 SingleTask。我第一次单击按钮时,对话框正在显示,但是当我关闭 activity 并再次启动它并单击按钮时,ProgressDialog
不再显示。
我的代码:
private class FakeTask extends AsyncTask<Integer, Void, Void>{
private FakeCallBackListener mListener;
FakeTask(FakeCallBackListener listener){
mListener = listener;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
mProgressDialog = new ProgressDialog(mContext);
mProgressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
mProgressDialog.setIndeterminate(true);
mProgressDialog.setMessage(mContext.getString(R.string.processing_data));
mProgressDialog.setCancelable(false);
mProgressDialog.setInverseBackgroundForced(true);
if (!((Activity)mContext).isFinishing()){
mProgressDialog.show();
}
}
@Override
protected Void doInBackground(Integer... params) {
try {
Thread.sleep(params[0]);
} catch (InterruptedException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);
mProgressDialog.dismiss();
}
}
当单击按钮时,我只是调用它:
new FakeTask(listener).execute(delay);
在具体的清单中 Activity
我有:
android:launchMode="singleTask"
有什么建议吗?我知道,由于 Activity 实际上并未被销毁,因此将上下文传递给死对话框。但是我如何修复对话框以使其每次都显示?
我认为您在访问 mContext
时遇到问题。
为什么不将其作为参数传递给 FakeTask 构造函数?
private FakeCallBackListener mListener;
private Context mContext;
FakeTask(Context context, FakeCallBackListener listener) {
mContext = context;
mListener = listener;
}