我有一个应用程序,可以随时下载图像的列表视图。他们是非常小的图像,他们正在下载后被存储。但是,如果用户连接速度非常慢(我的意思是很慢),它会滞后,用户会收到“强制关闭或等待?”的提示。对话。关于“强制关闭/等待”通知
我想知道如果我可以在用户得到通知之前捕捉到这一点,这将使我能够杀死我的线程,并抛出自己的自定义对话框并处理它。
这可能吗?
我有一个应用程序,可以随时下载图像的列表视图。他们是非常小的图像,他们正在下载后被存储。但是,如果用户连接速度非常慢(我的意思是很慢),它会滞后,用户会收到“强制关闭或等待?”的提示。对话。关于“强制关闭/等待”通知
我想知道如果我可以在用户得到通知之前捕捉到这一点,这将使我能够杀死我的线程,并抛出自己的自定义对话框并处理它。
这可能吗?
由于您阻止了UI线程,因此您将收到ANR (application not responding)
对话框。这不好!在单独的线程上执行所有长时间运行的任务(,比如网络或文件IO),表示AsyncTask
。
您可以使用Strict Mode来检测您滥用UI线程的位置。
这听起来像你正在UI线程上做你的下载。这与推荐的做法背道而驰,而Honeycomb则会抛出异常。请参阅文章Painless Threading,了解如何将网络活动从UI线程移出。
我建议你可能不想在UIThread上下载图像。您可能应该将图像加载到后台线程,这样您就不会首先获得ANR。
你可以看看使用AsyncTask或类似的工作,所以你不必自己编写线程同步代码。
StrictMode是好的,但只有成为可用API 9级(Android 2.3的)。 – 2011-06-03 15:37:06