android中止线程_Android如何结束并重启线程? | 学步园

相信开发过游戏的人都认识SurfaceView的双线程双缓冲机制。但一旦当前Activity退出到Home,再回到Activity便会报错:Thread already started.

寻找过网上的解决方法,一个是退出到Home时触发surfaceDestroyed()事件,令thread stop。回到Activity时触发surfaceCreated事件令thread.start。但结果依然提示Thread already started; 第二个方法就是每重新进入Activity触发onRestart()事件,new一次surfaceView,构造新的线程(我的new Thread是在surfaceview的构造函数里面,所以new了SurfaceView也同时会new

Thread),但debug一次发现Thread依然是旧的Thread内存地址,没有构造新的?最后一个方法,最为成功的,就是把new Thread放到surfaceCreated里面,而不是在构造函数里。这样每次返回Activity时都是新的Thread。那么原来的Thread怎么办呢?似乎不用处理,debug窗口已经看不到原来的那个Thread地址。

好了,问题已经解决。但这里有两个遗留问题需要讨论:一、为什么我new过一次surfaceView并同时new Thread以后,构造的不是新的线程,而是用回旧的线程?

二、假如用上述的第三个方法,旧的线程跑去哪里了?难道还在后台跑吗?那debug窗口为什么观察不到?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值