我试图检查我的用户何时停止滚动。
为此,我使用这种方法:
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 在活动打开时一直运行?