我正在尝试检查我的用户何时停止滚动。
为此,我使用以下方法:
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();
}我在我的onCreate中调用checkFromScrolling()。
我的问题是Runnable只运行一次,而不是一直运行。我之所以知道这一点,是因为我的日志报告中只有一个呼叫
Log.i("commentsYDiefference", commentsYDiefference+"");
Log.i("oldCommentsYDiefference", oldCommentsYDiefference+"");如何让Runnable在活动打开的时候一直运行?
发布于 2013-10-08 19:55:45
您可以添加一个while循环来检查布尔变量(keepRunning)是否为真。然后,在关闭活动之前,必须将其设置为false。
https://stackoverflow.com/questions/19247004
复制相似问题