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
展开全部
看这种帖子就要有种“雾里看花”的意境
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询