我做了一个应用程序。在模拟器Nexus 5x API26 x86中运行良好。 然而它崩溃运行在一些其他Android版本 https://play.google.com/store/apps/details?id=tk.myessentialoils.reprogramyourmind
崩溃1 LGE V20(elsa),4096MB RAM,Android 7.0
java.lang.IllegalArgumentException:at java.util.Random.nextInt (Random.java:391)at tk.myessentialoils.reprogramyourmind.MyService $ TimeDisplayTimerTask $ 1.run (MyService.java:92)
任何人都可以浏览我的java课程并告诉我如何优化它们吗?
private class TimeDisplayTimerTask extends TimerTask {
@Override
public void run() {
mHandler.post(new Runnable() {
@Override
//this is the line 92 crash, randomStr
public void run() {
String randomStr = array[new Random().nextInt(array.length)];
final Toast Notify = Toast.makeText(getApplicationContext(),randomStr, Toast.LENGTH_LONG);
TextView toastMessage = (TextView) Notify.getView().findViewById(android.R.id.message);
toastMessage.setTextColor(Color.RED);
toastMessage.setTextSize(21);
Notify.getView().setBackgroundColor(Color.TRANSPARENT);
Notify.setGravity(Gravity.CENTER, 0, 0);
Notify.show();
Handler cancelToast = new Handler();
cancelToast.postDelayed(new Runnable() {
@Override
public void run() {
Notify.cancel();
}
}, DISPLAYTIME);
}
});
}
}
答案 0 :(得分:0)
感谢您的评论。 这也是我的想法。很可能是array.length为0或未传递。
所以我的解决方案是实现一个检查,如果length = 0则打破代码。