显示黑色透明层而不是警报

时间:2012-01-20 11:57:21

标签: android

我开发了一个应用程序,我在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)代替警报,它将显示黑色透明屏幕。

1 个答案:

答案 0 :(得分:0)

也许尝试从Activity生命周期实现onResume()并解决问题;-) 它可以检查asyncTask是否已完成并获取屏幕,并正确显示警告......