我开发了一个应用程序,我在onPostExecute()方法中执行某些操作后在异步任务中使用Async任务我正在显示警报。每件事情都运行正常,但问题是当应用程序来自后台而不是显示警告时它显示黑色透明层。为什么会这样?任何想法??
以下是我的代码段和重现问题的步骤:
请创建一个活动以使用异步任务:
private class ImageUploaderTask extends AsyncTask<Void, Integer, Void> {
ProgressDialog mProgressDialog;
private void showLoading()
{
mProgressDialog = ProgressDialog.show(myActivity.this,
"Loading", "Please wait...", false, false);
}
private void dismissLoading()
{
mProgressDialog.dismiss();
}
@Override
protected void onPreExecute() {
showLoading();
}
@Override
protected Void doInBackground(Void... arg0) {
try
{
Thread.sleep(50000);
}
catch (Exception e) {
// TODO: handle exception
}
}
@Override
protected void onPostExecute(Void result) {
dismissLoading();
showAlert(myActivity.this,"Info","Process Finished.");
}
public void showAlert(Context context, String Title, String Message) {
AlertDialog.Builder alertbox = new AlertDialog.Builder(context);
alertbox.setTitle(Title);
alertbox.setMessage(Message);
alertbox.setCancelable(false);
alertbox.setPositiveButton("OK",null);
alertbox.show();
}
@Override
protected void onCancelled() {
dismissLoading();
}
}
重现问题的步骤:
1)启动异步任务并将应用程序发送到后台
2)确保完成异步任务并将应用程序置于前台
3)代替警报,它将显示黑色透明屏幕。
答案 0 :(得分:0)
也许尝试从Activity生命周期实现onResume()并解决问题;-) 它可以检查asyncTask是否已完成并获取屏幕,并正确显示警告......