Activity执行finish()的时候,如何杀掉这个Activity中启动的子...

遇到一个问题,启动一个Activity,然后开启一个线程获取网络数据,有时候在这个Activity执行finish的时候,访问网络的线程还在执行着(还没有访问到数据,但这... 遇到一个问题,启动一个Activity,然后开启一个线程获取网络数据,有时候在这个Activity执行finish的时候,访问网络的线程还在执行着(还没有访问到数据,但这个时候已经不需要这个线程了,Activity都已经关闭了,在获取数据只能是浪费资源),如何杀掉这个线程,只杀掉在这个Activity中启动的子线程,求高手指点,谢谢 展开
 我来答
匿名用户
2013-09-23
展开全部
一般给个标志位就行了。线程 while(true){if(flag){执行数据}}activity ondestroy的时候给flag = false;就好了,线程自己中断消失
匿名用户
2013-09-23
展开全部
楼上,楼主的Thread不是无限循环执行的,而是从头到尾自己结束的runnable。而且你这种设置标志位的方法很危险,如果一旦标志位出了问题,就会有memory leak的可能。最好的办法是用thread的interrupt方法,然后在runnable里面的执行流程中关键地方检查Thread.interrupted()。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-09-23
展开全部
你启动的新线程你保存一个,你在destroy里面去把线程中止就行。或者你把你的线程统一扔到一个线程池里面去,让线程池去管理。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-09-23
展开全部
看这种帖子就要有种“雾里看花”的意境
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式