我正在使用HockeyApp来捕获内部测试人员的崩溃问题,并发现了一条崩溃报告:
java.lang.IllegalThreadStateException: Thread already started
at java.lang.Thread.checkNotStarted(Thread.java:849)
at java.lang.Thread.start(Thread.java:1059)
at com.myapp.service.ApiService.connect(ApiService.java:258)
at com.myapp.service.ApiService.connect(ApiService.java:250)
at com.myapp.service.ApiService.connectForRecord(ApiService.java:748)
at com.fmyapp.service.ApiService.connectForRecord(ApiService.java:733)
at com.myapp.service.ApiService.getOxiChekList(ApiService.java:703)
at com.myapp.service.ApiService.access$1200(ApiService.java:35)
at com.myapp.service.ApiService$1.run(ApiService.java:420)
at java.lang.Thread.run(Thread.java:818)
在查看过后,看起来问题是代码在线程完成后调用onStart()。但是我的服务中唯一调用onStart()的代码如下。请注意,它是在创建新线程后启动的。这只发生过一次所以我不确定任何重复步骤,但我很好奇是否有其他人知道是什么原因造成的。
第256-260行(第258行崩溃)
private void connect(ApiMethod apiMethod, Token authToken, long apiRefKey, String[] urlParams, Object... params) {
mConnectThread = new ConnectThread(apiMethod, authToken, apiRefKey, urlParams, params);
mConnectThread.start();
mIsRunning = true;
}
答案 0 :(得分:0)
我最近遇到过这个问题,
我检查线程状态是否为terminated
并重新启动线程,我的问题解决了,希望这会对你有所帮助
例如:
if(mythread.getState().equals(Thread.State.TERMINATED)) {
mythread = new Thread(new Runnable() {
@Override
public void run() {
while(status == GameStatus.Running) {
try {
Thread.sleep(1000);
timelapsed += 1;
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
});
}