在完成回调中结束页面会在走一次完成
Opened this issue · 6 comments
star-andy commented
目前解决办法是在结束页面前注销回调监听
mGlv.setGestureLockListener(null);
sinawangnan7 commented
我想先确定下你的问题:
public interface OnGestureLockListener {
/**
* 监听视图解锁开始(手指按下)
*/
void onStarted();
/**
* 图案解锁内容改变
*
* @param progress 解锁进度(数字字符串)
*/
void onProgress(String progress);
/**
* 图案解锁完成
*
* @param result 解锁结果(数字字符串)
*/
void onComplete(String result);
}
你的问题是指:
1.最后一次onProgress方法的参数progress和onComplete方法的参数result一样?
2.还是onComplete方法被调用了两次?
star-andy commented
我在onComplete 中执行销毁fragment onComplete又被调用了一次 不知道是不是和我使用的fragment框架有关。 当时比较急也没做其他测试 直接置空规避了。
https://github.com/YoKeyword/Fragmentation 使用的这个fragment框架
sinawangnan7 commented
onComplete这个方法只有在手指抬起(ACTION_UP事件)时会被回调,用于标识触摸完成。
可以检查下:是不是你注册了两次OnGestureLockListener或者手动调用过onComplete方法...
star-andy commented
没有的 只注册了一次
coolxiao commented
我也遇到了
sinawangnan7 commented
我这边又看了下以前的代码, 如果是ACTION_UP事件和ACTION_CANCEL事件同时被触发的话,还真会出现两次。但是我这拿我的几部手机做了下实验,ACTION_UP事件和ACTION_CANCEL事件好像不会同时出现。能发下你的手机型号吗?
@Override
public boolean onTouchEvent(MotionEvent event) {
mEventX = event.getX();
mEventY = event.getY();
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
downEventDeal(mEventX, mEventY);
break;
case MotionEvent.ACTION_MOVE:
moveEventDeal(mEventX, mEventY);
break;
case MotionEvent.ACTION_UP:
case MotionEvent.ACTION_CANCEL:
upEventDeal();
break;
}
// 2.重绘
postInvalidate();
return true;
}