我有一个应用程序,我们提供远程用户界面(其中包含控制媒体服务器的所有按钮)。
问题是当我们点击任意一个按钮时,我们正在执行相应的动作,这是非常长的UPNP网络操作。因此,当我们连续按下按钮时,设备最终会出现ANR异常并强制关闭应用程序。我对这个ANR异常做了一些研究,最后发现,我们可以使用Thread或AsyncTask来解决这个问题。
但是在我的应用程序中,因为我们提供了这么多按钮,当用户连续按下按钮时,它可能会导致在应用程序中创建大量线程。
请就此向我提出建议。
如何克服这个问题?
由于
答案 0 :(得分:1)
使用AsyncTask的众多优点之一是它为您管理线程(和线程池)。因此,如果您使用AsyncTask,则不应该遇到创建太多线程的问题。
此外,如果您担心创建太多AsyncTasks,请考虑将任务放在成员变量(例如Queue或ArrayList)中并跟踪其状态。如果还在处理,则可能没有必要启动另一个。或者您可以删除不再需要其结果的任务。
答案 1 :(得分:1)
只需跟踪成员变量中的按钮单击并使用One AsyncTask即可以队列方式执行此长时间运行操作。
如果可能,请避免多线程进行这些操作。