Android: активность не получает фокус, когда диалог закрывается в фоновом режиме - PullRequest
0 голосов
/ 16 ноября 2011

Когда я нажимаю кнопку «Домой», чтобы переместить свое приложение в фоновый режим и затем возобновить его, иногда элементы пользовательского интерфейса приложения не имеют фокуса. Весь экран выглядит серым (яркость уменьшается), и ни одна из экранных кнопок не может быть нажата. Более того, даже если аппаратные кнопки , кроме громкости, питания и домашнего режима, не работают. Единственное решение - принудительно остановить приложение и запустить снова. Эта проблема не воспроизводится и встречается лишь в редких случаях. Кто-нибудь еще видел эту проблему в своих приложениях?

РЕДАКТИРОВАТЬ ::::::::::

Я нашел реальную проблему. Это более воспроизводимо: я нажимаю на веб-сервис для загрузки данных в 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 голосов
/ 16 ноября 2011

не обычная проблема.это происходит, когда вы выполняете тяжелые / сложные операции при возобновлении экрана / приложения, в котором застрял пользовательский интерфейс.так что проанализируйте различные реализации.

...