在较新的Android版本上崩溃

时间:2018-05-22 07:12:35

标签: java android

我做了一个应用程序。在模拟器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);

                }
            });
        }
    }

1 个答案:

答案 0 :(得分:0)

感谢您的评论。 这也是我的想法。很可能是array.length为0或未传递。

所以我的解决方案是实现一个检查,如果length = 0则打破代码。