当我按下home键将应用程序推到后台,然后再恢复应用程序时,有时应用程序UI元素没有焦点。整个屏幕都变灰了(亮度降低了),屏幕上的按钮都无法点击。另外,如果硬件按键(除外)音量、电源和home不工作。唯一的解决办法是强制停止应用程序并重新开始。这个问题是不可重复的,并且只在随机场合很少发生。还有其他人在他们的应用程序中看到这个问题吗?
编辑 ::::::::::
我发现了真正的问题。这是更可复制的:我点击web服务下载AsyncTAsk,
中的数据并显示ProgressDialog
。在显示对话框时,如果用户按下home键。,应用程序被发送到后台。同时,下载完成,对话框被取消。现在当用户回到应用程序时,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
。有没有人遇到过类似的问题,或者有什么解决办法?
不常见的问题。当你在恢复屏幕/应用程序上做一些繁重/复杂的操作时,它就会发生。所以分析各种实现。