Android:在后台关闭对话框时,Activity无法获得焦点

时间:2011-11-16 07:10:21

标签: android android-activity onresume application-lifecycle

当我按下主页按钮将我的应用程序推送到后台并在之后恢复时,有时应用程序UI元素没有焦点。整个屏幕显示为灰色(亮度降低),并且无法单击屏幕上的按钮。更重要的是,事件硬件按钮除了音量,电源和家庭功能不起作用。唯一的解决方案是强制停止应用程序并重新启动。 此问题不可重现,并且在随机情况下很少发生。有没有其他人在他们的应用程序中看到过这个问题?

编辑::::::::::

我找到了真正的问题。这是更可重复的:我点击了一项网络服务,在AsyncTAsk,下载数据并显示ProgressDialog。当对话框显示时,如果用户按下主页按钮,则应用程序将被发送到后台。同时,下载完成,对话框被取消。现在,当用户返回应用程序时,activity无法获得焦点,实质上,不再接收任何触摸事件

在此处添加了异步任务的代码:

class GetStoresTask extends AsyncTask<String, Void, List<String>> {
    ProgressDialog pd;

    protected void onPreExecute() {
        super.onPreExecute();
        pd = ProgressDialog.show(DisplayStoresActivity.this,
                getResources().getString(R.string.pleaseWait),
                getResources().getString(R.string.dialogFindingStores),
                true, true);
        pd.setOnCancelListener(new OnCancelListener() {

            public void onCancel(DialogInterface dialog) {
                // TODO Auto-generated method stub
                GetStoresTask.this.cancel(true);
            }
        });
    }

    protected List<Message> doInBackground(String... params) {
        // carried out my download here
                          return downloadStoresList();
    }

    protected void onPostExecute(List<String> result) {
        // TODO Auto-generated method stub
        pd.dismiss();
                          adapter.notifyDataSetChanged();
        super.onPostExecute(storesList);
    }

当应用程序处于后台并且对话框被解除时,焦点不会转移到我的Activity对话框。有没有人遇到类似的问题,或者有任何解决方案?

1 个答案:

答案 0 :(得分:0)

不是通常的问题。当您在恢复屏幕/应用程序时执行一些繁重/复杂的操作时会发生这种情况。所以分析各种实现。