Android中thread.start()出现的thread already exist错误
来源:互联网 发布:淘宝网夏季竹凉席坐垫 编辑:程序博客网 时间:2024/05/17 06:48
报错信息:
FATAL EXCEPTION: main
Process: com.example.lxx.game_lxx, PID: 31256
java.lang.IllegalThreadStateException: Thread already started
at java.lang.Thread.checkNotStarted(Thread.java:849)
at java.lang.Thread.start(Thread.java:1059)
at com.example.lxx.game_lxx.lxx01_GameView.surfaceCreated(lxx01_GameView.java:114)
问题产生:
在使用SurfaceView绘制游戏的过程中,创建了一个Thread,且在Thread中已经使用 了boolean值控制run函数中的循环,在SurfaceCreate方法中调用线程的thread.start()方法。在退出后,理论上因为退出时将标志位设为了false,Thread中run方法执行结束,应当自动销毁,但重新打开该活动时产生一个thread already exist错误。
分析原因:
thread是在活动创建时产生的,在整个活动持续过程中,除非该活动被finish(),否则该变量一直存在,即便线程执行结束被回收。追踪start()方法,可以看到如下代码
public synchronized void start() { if(this.threadStatus != 0) { throw new IllegalThreadStateException(); }发现异常正是从一条语句中抛出。接下来查找threadStatus变量,在整个文件中并没有找到有threadStatus改变的语句。如有人知道问题产生原因还请指导一下。
解决方法:将thread.start()替换为 new Thread(thread).start();这里需要检测一下之前使用标识位停止的线程是否被正常回收,使用Android studio-》tools-》Android device monitor 运行后看到的线程数和退出重新进入看到的线程数是相同的。证明之前的线程已经被正常回收,这样一来这个问题就得到解决。
- Android中thread.start()出现的thread already exist错误
- Thread 的stop方法过时Thread already start解决方法
- 关于Thread is already start
- Android中如何解决Thread第二次Thread.start()报错
- 使用Openfire和Asmack实现IM功能,经常出现“Thread already started”的错误
- Android Thread第二次Thread.start()报错的疑问
- Android Thread第二次Thread.start()报错的疑问
- Thread中start()和run()的区别
- Thread中start()和run()的区别
- Thread中start()和run()的区别
- Thread中start()和run()的区别
- thread的start
- Thread的start方法。
- thread.start和 thread.run 的区别
- Thread.start()和Thread.run()的区别
- Android中使用Thread线程出现的问题
- 兔子--android开发中 java.lang.IllegalThreadStateException: Thread already started
- Android中如何解决Thread is already started问题
- 在eclipse平台上,通过maven构建web项目时,pom.xml报错web.xml is missing and <failOnMissingWebXml> is set to true
- [笔记]:指针 链表 邻接表
- 今天我开通了博客
- CSS H5 定位
- MonkeyRunner—API篇之MonkeyImage&MonkeyRunner
- Android中thread.start()出现的thread already exist错误
- iOS多线程---GCD
- 封装jQuery的ajax
- java.sql.SQLException: Table 'XXX' is marked as crashed and should be repaired异常修复
- spark源码编译(maven)
- 二叉树的一个重要性质
- HTML中 点击图片翻转文字
- 不改变button大小,扩大点击范围
- webrtc开源代码阅读1 分享