Emi*_*yan 8 multithreading android android-ui android-asynctask android-handler
从UI线程运行异步任务然后修改UI是android开发中的常见问题,因此我决定花一些时间,研究并使用不同的技术,找到最适合我的方法.
我认为重要的因素是:
Activity或者Fragment应该保持尽可能多的线程管理以下是关于各种方法的印象摘要(可能有些错误,有些只是意见):
当我第一次跳入Android时,我AsyncTask没有使用简单LoaderManager:
AsyncTaskManager一个用活动生命周期来管理它们.这似乎是推荐的方法,所以我研究了一下:
Fragment生命周期中的任务,并且从我的理解基本上只是在必要时重新启动任务.在活动重新启动后重新启动活动之前,它似乎无法接收启动任务的结果.Parcelable或Serialiazable进入Bundle对象.这是我确定的方法:
所以,我来到了,使用的结论Handler,Threads和Messages是一个更好的解决办法,但我相信,我失去了一些东西,因为几乎到处都看着我的建议是使用AsyncTaskLoader方法.我错过了什么?
感谢您的投入.
您所缺少的是类似于Android的类,AsyncTask并且LoaderManager是用Android编写的.这意味着,与台式计算机相比,操作系统旨在充分利用最小的硬件.AsyncTask限制您的线程池,因为您有比其他系统更严格的线程限制.如果您尝试生成100多个线程,则新线程将被拒绝或使系统崩溃.您当然可以使用Thread和Handler,但你是你自己的,只要管理它.
最后我听说,AsyncTask支持10个队列深度为10个任务的线程(在以后的版本中可能会增加).如果这是限制性的,您可以随时获取源代码并编写自己的源代码.我以前做过.你要考虑的重要一点是,我可以在产生太多线程的情况下遇到麻烦,如果是这样,我将如何处理它.
为了解决你的问题,为什么它建议使用LoaderManager和AsyncTaskLoader,它只是一个方便.这是一种简单的方法来重新加载数据并将其传递到依赖于该数据的代码部分.在任何情况下都没有必要.
| 归档时间: |
|
| 查看次数: |
4631 次 |
| 最近记录: |