Когда я нажимаю кнопку «Домой», чтобы переместить свое приложение в фоновый режим и затем возобновить его, иногда элементы пользовательского интерфейса приложения не имеют фокуса. Весь экран выглядит серым (яркость уменьшается), и ни одна из экранных кнопок не может быть нажата. Более того, даже если аппаратные кнопки , кроме громкости, питания и домашнего режима, не работают. Единственное решение - принудительно остановить приложение и запустить снова. Эта проблема не воспроизводится и встречается лишь в редких случаях. Кто-нибудь еще видел эту проблему в своих приложениях?
РЕДАКТИРОВАТЬ ::::::::::
Я нашел реальную проблему. Это более воспроизводимо: я нажимаю на веб-сервис для загрузки данных в 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
. Кто-нибудь сталкивался с подобными проблемами, или есть какое-либо решение этой проблемы?