我开始在片段中的asynctask中做一些磁盘I / O.
打开一个新的活动/片段(在前一个片段之上)是否会杀死后台线程?我认为不是这个动作,但如果我以不同的方式杀死片段或者完成()活动会杀死后台线程吗?
我正在考虑将I / O放入带有广播接收器的服务中,但根据这里的答案可能没有必要。
答案 0 :(得分:0)
根据官方文件:
理想情况下,AsyncTasks应该用于短操作(最多几秒钟。)如果需要保持线程长时间运行,强烈建议您使用java.util.concurrent提供的各种API。 pacakge,如Executor,ThreadPoolExecutor和FutureTask。
我很确定后台线程没有被破坏但在那时没用。假设某个活动启动了异步任务并更新了postExecute中按钮的文本。问题是如果用户做了一些意想不到的事情,比如旋转他的手机,则重新创建活动并且异步任务的上下文无效。所以它不会更新按钮文本。
请查看以下链接,以便更好地理解和解决方法:
http://blogactivity.wordpress.com/2011/09/01/proper-use-of-asynctask/