Android 异步任务超过几秒钟?
API参考说明: AsyncTasks最好用于短期操作(几秒钟 顶多。)Android 异步任务超过几秒钟?,android,android-asynctask,Android,Android Asynctask,API参考说明: AsyncTasks最好用于短期操作(几秒钟 顶多。) doInBackground的问题是线程池可能会在30秒后耗尽线程吗?如果这就是原因,那么如果我确保我的应用程序永远不会有超过一个这样长时间运行的doInBackground同时执行,这是否就不再是一个问题了 我认为AyncTasks通常仍然绑定到生成它们的前台活动堆栈,因此,例如,如果某个活动生成异步任务,用户离开应用程序,然后操作系统内存不足,它将终止该活动的进程(包括仍在运行的异步任务),如果用户恢复/返回到你的应用
doInBackground的问题是线程池可能会在30秒后耗尽线程吗?如果这就是原因,那么如果我确保我的应用程序永远不会有超过一个这样长时间运行的doInBackground同时执行,这是否就不再是一个问题了 我认为AyncTasks通常仍然绑定到生成它们的前台活动堆栈,因此,例如,如果某个活动生成异步任务,用户离开应用程序,然后操作系统内存不足,它将终止该活动的进程(包括仍在运行的异步任务),如果用户恢复/返回到你的应用程序,你只需要恢复状态并重新开始 对于运行时间较长的任务,尤其是只有一个或几个任务的任务,您可能需要一个服务,因为即使在关闭应用程序的UI以节省内存时,这些任务也可以持久存在
免责声明:我已经有一段时间没有做过Android编码了,所以这个答案可能已经过时了,或者基于对事物如何工作的错误理解。我将删除此警告,如果有人与最近的经验可以评论确认;如果高级代表知道这是正确的,欢迎他们直接编辑掉这一段。Walter Mundt给出的答案是正确的。尽管如此,我还是想补充一些信息,并给出一个指向可用于长时间运行异步任务的库的指针 异步任务是为在后台完成任务而设计的。是的,如果您的任务持续两段时间,那么您将面临两个不同的问题:
在长时间运行的操作中使用AsyncTasks确实是一个非常糟糕的主意。尽管如此,对于短时间的视图(例如在1或2秒钟后更新视图)来说,它们还是可以的 我鼓励您下载,它真正深入地解释了这一点,并提供了执行一些后台操作的不同方法的示例和演示
如果您正在为非网络相关任务(例如,没有缓存)寻找RoboSpice的替代方案,您也可以看看。我可以问一下您想做什么吗?我有一个屏幕,屏幕上有一组指向远程音频样本的链接,当用户单击相关音频样本应该播放的链接时,播放时间约为30秒。当示例结束时,或者如果用户单击其他链接,或者由于其他一些原因,播放将停止。我想在Asy做所有MediaPlayer的事情