最近做了一个小demo,主要功能是当长按一个item的时候拖动到指定区域3秒后,可以切换到另一个页面。当用到timer 控件的时候问题发生了,当我拖动到指定区域后,可能马上就显示另外一个布局了。
private int count;
private boolean isStop;
private ImageView iv;
private void onDrag(int x, int y) {
img = ((GridViewTest) mContext).getImagev();
Log.v("x", x + "----");
Log.v("y", y + "----");
if (x > 100 && y > 700) {
if (mTimer == null) {
Log.v("new", "new");
mTimer = new Timer();
}
mTimerTask = new TimerTask() {
@Override
public void run() {
count++;
Log.e("count", count + "========");
if (count >= 3) {
isStop = true;
mTimer.cancel();
mTimer = null;
count = 0;
Message msg = new Message();
msg.what = 1;
mHandler.sendMessage(msg);
}
}
};
if (isStop == false) {
Log.v("12323", "123123");
mTimer.schedule(mTimerTask, 0, 1000);
}
研究了半天发现到了指定区域后,每次拖动都会Mtimer都会发送,
这样解决办法就有了,加一行
if (isStop == false) {Log.v("12323", "123123");mTimer.schedule(mTimerTask, 0, 1000);isStop = true;}
;让它互斥,就完美解决了。