2012-11-09 61 views
1

我正在开发一个Android应用程序,该应用程序使用在线服务,我需要加载我的片段。基本上,我有一个菜单,每个按钮替换下面的碎片。当我点击一个按钮时,片段开始被替换,如果我同时按下了键盘上的另一个按钮,我得到“应用程序不响应”对话框,然后单击“等待”,并成功加载我的片段。有没有办法阻止这种情况发生?由于Web服务,我的应用程序总是需要几秒钟才能加载。我在Google上读到,我可以使用AsyncTask,并在DoOnBackground方法上完成加载。我不知道这是否有效,但我甚至无法尝试,因为它不会让我改变视图,它会抛出一个关于只有原始线程可以改变视图的错误..我需要服务来完成加载我的视图,所以我甚至不能用AsyncTask做这个服务。我现在已经没有想法了!必须有办法做到这一点..我欣赏建议!如何避免ANR对话框应用程序未响应

回答

11

有没有办法阻止这种情况发生?

是的:不要花太长的时间在主应用程序线程上。使用StrictMode来识别可能的罪魁祸首(磁盘I/O,网络I/O),并使用Traceview找出你正在做的事情,可能需要很长时间。

由于Web服务的原因,我的应用程序总是需要几秒钟才能加载。

这应该在后台线程中完成。

我读谷歌,我可以使用的AsyncTask,并完成对DoOnBackground方法加载..我不知道是否可行,但我不能去尝试,因为它不会让我改变看法有,它抛出一个错误大约只有原来的线程可以改变看法

这就是为什么你更新从onPostExecute()方法的意见,如the documentation for AsyncTask描述。

+0

好的,谢谢!我会尝试 – ximena

+2

你应该接受这个答案! – 2012-11-09 14:53:56

+2

是的,我会尽快:),只要它让我 – ximena

0

您必须对AsyncTask的onPostExecute()函数中的ui进行更改。

0

绝不要在主干上下文中执行数据库操作或内容提供者操作。迟早你会遇到应用程序不响应错误。 ANR不是一个好的做法。

相关问题