我正在使用 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)
在查看 SO 之后,问题似乎是线程完成后代码正在调用 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;
}