0

我试图检查我的用户何时停止滚动。

为此,我使用这种方法:

commentsLayout.setScrollViewListener(new ScrollViewListener() {

            @Override
            public void onScrollChanged(WallScrollView scrollView, int x, int y,
                    int oldx, int oldy) {
                // TODO Auto-generated method stub

                oldCommentsYDiefference = oldy;
                commentsYDiefference = y;

                             //do something
}

我注意到当用户停止滚动时,oldCommentsYDiefference 和之间的差异commentsYDiefference始终为 1。

因此,为了检查我的用户何时停止滚动,我考虑创建一个线程,使用以下代码检查这两个数字的差何时为 1:

public void checkFromScrolling()
    {
        new Thread(new Runnable() {
            @Override
            public void run() {

                Log.i("commentsYDiefference", commentsYDiefference+"");
                Log.i("oldCommentsYDiefference", oldCommentsYDiefference+"");

                if(commentsYDiefference - oldCommentsYDiefference == 1 || oldCommentsYDiefference - commentsYDiefference == 1)
                {

                    if(checkWallScroll)
                        new Handler().postDelayed(new Runnable() {
                        @Override
                        public void run() {

                                         //do things

                            oldCommentsYDiefference = commentsYDiefference;

                            checkWallScroll = true;

                            }
                    }, 2000);

                    checkWallScroll = false;
                }
            }
        }).start();
    }

我调用checkFromScrolling()我的 onCreate。

我的问题是 Runnable 只运行一次,而不是一直运行。我知道这一点,因为我的日志报告中只接到一个电话

Log.i("commentsYDiefference", commentsYDiefference+"");
Log.i("oldCommentsYDiefference", oldCommentsYDiefference+"");

如何让 Runnable 在活动打开时一直运行?

4

1 回答 1

0

您可以添加一个 while 循环检查布尔变量 (keepRunning) 是否为真。然后您必须在活动关闭之前将其设置为 false。

于 2013-10-08T11:55:45.480 回答