ANR异常处理

时间:2011-10-11 05:01:28

标签: android

我有一个应用程序,我们提供远程用户界面(其中包含控制媒体服务器的所有按钮)。

问题是当我们点击任意一个按钮时,我们正在执行相应的动作,这是非常长的UPNP网络操作。

因此,当我们连续按下按钮时,设备最终会出现ANR异常并强制关闭应用程序。我对这个ANR异常做了一些研究,最后发现,我们可以使用Thread或AsyncTask来解决这个问题。

但是在我的应用程序中,因为我们提供了这么多按钮,当用户连续按下按钮时,它可能会导致在应用程序中创建大量线程。

请就此向我提出建议。

如何克服这个问题?

由于

2 个答案:

答案 0 :(得分:1)

使用AsyncTask的众多优点之一是它为您管理线程(和线程池)。因此,如果您使用AsyncTask,则不应该遇到创建太多线程的问题。

此外,如果您担心创建太多AsyncTasks,请考虑将任务放在成员变量(例如Queue或ArrayList)中并跟踪其状态。如果还在处理,则可能没有必要启动另一个。或者您可以删除不再需要其结果的任务。

答案 1 :(得分:1)

只需跟踪成员变量中的按钮单击并使用One AsyncTask即可以队列方式执行此长时间运行操作。

如果可能,请避免多线程进行这些操作。