我知道您在AsnycTask中使用非UI代码的情况非常好,但我只是想知道在使用AsyntTask时是否有任何问题?我没有任何产生问题的代码。但我只是想知道如果你有AsnycTask并希望分享它,那么任何不好的经历。异步任务如果有任何问题
回答
我只是想分享一些信息,如果您使用的是Asynctask,即使活动不存在,它也会继续工作。 因此,如果您有在活动的onCreate()开始的asynctask,并且旋转了设备。在每次轮换时,新的Asysntask实例都会创建一个新的活动。如此多的请求将通过网络发送以执行相同的任务。这样,会消耗大量内存,从而导致应用程序性能崩溃。所以要处理它使用装载机(Asynctask装载机)。 欲了解更多信息检查视频: Loaders
- 内存泄漏:
即使活性被破坏,持有的AsyncTask活动的参考,因为它有回调方法来更新UI。
- 消除的AsyncTask:
- 数据丢失:
使用取消消除的AsyncTask()API将不确保任务将立即停止。
当屏幕取向完成。活动被破坏并重新创建,因此AsysncTask将持有无效的活动引用,并且在更新UI时会遇到麻烦。
您应该使用的WeakReference''
感谢@HarisQureshi获取有用的信息。 – Vinodh
- 并发AsyncTasks:打开
Asynctask.java
转到行数,这表明你只能创建128个并发任务private static final BlockingQueue<Runnable> sPoolWorkQueue = new LinkedBlockingQueue<Runnable>(128);
- 旋转:当
Activity
重新启动,你的AsyncTask
的参考Activity
不再有效,因此onPostExecute()
将不起作用。 - 取消AsyncTasks:如果你
AsyncTask.cancel()
它不会取消你的AsyncTask
。您需要检查AsyncTask是否已被取消。 - 寿命周期:
AsyncTask
未与Activity
或Fragment
连接,因此您必须管理取消AsyncTask
的行为。
有一些解决方法,以解决上述有关详细信息,问题也来看看The Hidden Pitfalls of AsyncTask
- 1. 异步任务vs任务
- 2. 问题使用异步任务
- 3. 异步任务问题在android中
- 4. 问题异步任务执行httpconnection
- 5. 异步CTP - 任务超时问题
- 6. 异步任务
- 7. 异步任务
- 8. 异步任务从api的异步任务不运行异步
- 9. Gulp同步任务问题
- 10. android异步任务
- 11. 块异步任务
- 12. 异步任务,BufferedReader
- 13. SignalR异步任务
- 14. 异步任务抛出异常,如果没有等待?
- 15. 使用异步任务取消任务
- 16. 异步任务中的getInputStream任务
- 17. 保存异步任务结果
- 18. 不等待结果的异步任务
- 19. 这个异步任务方法有什么问题?
- 20. 主题V/S异步任务
- 21. 如何使芹菜任务调用异步任务?
- 22. 异步任务VS异步无效
- 23. 如何调用异步任务功能?
- 24. 如何等待异步任务
- 25. 如何使用异步任务返回
- 26. 如何SqlDataReader的转换任务异步
- 27. 接口是任务,但我没有任何异步代码
- 28. 任务异步c#编程
- 29. 麻烦异步任务
- 30. 异步任务超时?
它可以通过在'的onDestroy取消你'Asynctask'()来解决' –