Java中while循环中的线程处理

时间:2017-07-15 09:59:34

标签: java android multithreading

 while (cursor.moveToNext()) {
            words.setText(cursor.getString(1) + " :  " + cursor.getString(2));
            image.setLayoutParams(new ViewGroup.LayoutParams(words.getMeasuredHeight(),words.getMeasuredHeight()));

            ll.addView(words);
            ll.addView(image);
            wm.addView(ll, parameters);

            final ValueAnimator animator = ValueAnimator.ofFloat(0.0f, 1.0f);
            animator.setRepeatCount(0); // Times of repeat
            animator.setInterpolator(new LinearInterpolator());
            animator.setDuration(4000); //Fast and Furious
            // animator.setStartDelay(5000);
            animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
                @Override
                public void onAnimationUpdate(ValueAnimator animation) {
                    final float progress = (float) animation.getAnimatedValue();
                    final float width = words.getWidth();
                    final float translationX = width * progress;
                    words.setTranslationX(translationX);
                    words.setTranslationX(width - translationX); //Right to Left
                }
            });

            animator.start();
            animator.addListener(new AnimatorListenerAdapter() {
                @Override
                public void onAnimationEnd(Animator animation) {
                    new Handler().postDelayed(new Runnable() {
                        @Override
                        public void run() {
                            ll.removeView(words);
                            ll.removeView(image);
                            wm.removeView(ll);
                        }
                    }, 3000);
                }
            });
        }

这是我的代码。我在线程中有问题(我想是这样)。正如你看到的。 cursor获取我数据库中的所有数据。在那之后,它通过while循环获得每一个。 循环开始时,animator.start()以7s运行。但是while loop早些时候完成了。因此,在下一个循环中,它不能addView(),因为它不会删除removeView。它看起来像这张图片:processing。所以,while loop在运行新循环之前需要完成线程。 我是Java的新手,我不太了解线程。请帮我。谢谢。

0 个答案:

没有答案