im пытается проверить, когда мой пользователь перестает прокручивать.Runnable wont run
Для этого я использую этот метод:
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 запустить все время деятельность открыта?
Ваш оператор журнала не находится внутри метода runnable run. – Raghunandan
да есть. его внутри public void run() {= – dasdasd
замените '// делаем вещи' по регистрационным данным, а затем попробуйте – Raghunandan