Timer.cancel()无法正常工作

时间:2017-08-25 09:29:17

标签: android sqlite timertask

我想在达到最大值时停止它,但它会崩溃。

这是我想要显示图像的java类。

     public void start(View button) {
    if (timer != null) {
        timer.cancel();
    }
    position = 0;
    i=0;
    j=1;
    k=0;
    startSlides();
}

    public void startSlides() {
    timer = new Timer();
    timer.scheduleAtFixedRate(new TimerTask() {

        public void run() {
            runOnUiThread(new Runnable() {
                public void run() {

                    Intent intent = getIntent();
                    int topicId = intent.getIntExtra("SelectedTopicId", 1);

                    databaseAccess.open();

                    List<byte[]> data = databaseAccess.getImage(topicId);

                    Bitmap image = BitmapFactory.decodeByteArray(data.get(position), 0, data.get(position).length);

                    imageView.setImageBitmap(image);
                    position++;

                    List<String> vocab = databaseAccess.getVocabName(topicId);
                    textView2.setText(vocab.get(k));
                    k++;

                    databaseAccess.close();

                    if (position == data.get(position-1).length -1) {
                        timer.cancel();
                    }
                }
            });
        }

    }, 0, 1000);
}

这是错误:

  

致命异常:主程序:com.example.user.displayvocab,PID:     15550 java.lang.IndexOutOfBoundsException:Index:6,Size:6 at     java.util.ArrayList.get(ArrayList.java:411)at     com.example.user.displayvocab.Choice $ 1 $ 1.run(Choice.java:100)at     android.os.Handler.handleCallback(Handler.java:751)at     android.os.Handler.dispatchMessage(Handler.java:95)at     android.os.Looper.loop(Looper.java:154)at     android.app.ActivityThread.main(ActivityThread.java:6692)at     java.lang.reflect.Method.invoke(Native Method)at   com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1468)     在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1358)

我一直在寻找解决方案,但我仍然没有想出如何解决它。

0 个答案:

没有答案