2017-08-03 45 views
6

我得到这个错误,我该如何解决它?java.lang.InternalError Android

java.lang.InternalError: 
    at java.lang.Thread.nativeCreate (Native Method) 
    at java.lang.Thread.start (Thread.java:1063) 
    at java.util.concurrent.ThreadPoolExecutor.addWorker (ThreadPoolExecutor.java:920) 
    at java.util.concurrent.ThreadPoolExecutor.processWorkerExit (ThreadPoolExecutor.java:988) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1130) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:587) 
    at java.lang.Thread.run (Thread.java:818) 

用户是给我一些信息是这个:

java.lang.StringIndexOutOfBoundsException: length=0; regionStart=0; regionLength=1 
at java.lang.String.startEndAndLength(String.java:298) 
at java.lang.String.substring(String.java:1087) 
+16

第1步。发布足够的代码来重现问题。 –

+0

这是不可能的,我从播放控制台错误中得到这个错误。这是一个具有千行的应用程序@RoddyoftheFrozenPeas – Dahnark

+1

看起来您的线程池无法创建新线程。你的最大线程池大小是多少?您尝试创建多少个线程/池? –

回答

1

StringIndexOutOfBoundsException异常只是说,有人试图拨打substring(0, 1)上一个空字符串。如果你仔细观察栈跟踪,这是来自你的代码吗?如果是这样,那么只需在调用substring之前检查并确保字符串不为空。

至于Thread.nativeCreate,你是否有一些迹象表明它与其他StringIndexOutOfBoundsException异常有关?我不会假设,因为你没有提供关于他们关系的任何信息。 ThreadPoolExecutor.addWorker失败的最可能原因是资源耗尽,或者耗尽内存或设备上允许的线程用尽。检查您是如何获取和配置您正在使用支票的ThreadPoolExecutor,以查看您是否可能超出其参数MaximumPoolSizeLargestPoolSize

+0

那么,我实现了crashlytics(感谢@benp。因为我可以选择他的线程)。在未来的版本中,我会得到更精确的报告,我会再次来到这里......因为我现在只有Play Console的这些信息(几乎没有) – Dahnark