我有一个按钮,当用户点击此按钮时,它应该更新具有指定ID
的数据的状态public void updateByClick(int id) {
myCursor.moveToPosition(id);
if (myCursor.getShort(myCursor.getColumnIndex(MyTable.STATUS)) == 0) {
ContentValues cv = new ContentValues();
cv.put(MyTable.STATUS, true);
getContext().getContentResolver().update(MyTable.CONTENT_URI, cv,
MyTable._ID + "= ?", new String[] {String.valueOf(id + 1)});
}
}
问题是,如果用户快速点击按钮(因此有很多updateByClick事件),那么多次更新操作调用(更新尚未发生,因此状态仍为== 0)
如何检查ContentResolver(或其他内容)是否正忙(当前正在更新)然后我可以阻止多次更新调用
答案 0 :(得分:1)
我会用timeStamps解决这个问题。每次调用update方法时,都会创建一个带System.currentTimemillis()
的timeStamp,并检查上次保存的timeStamp的差异。如果未达到阈值,则不会调用更新请求。
答案 1 :(得分:1)
一个简单的解决方案是简单地忽略快速进入的按钮:
long prevTouchTime = 0;
long touchTimeout = 1000;
public void updateByClick(int id) {
long touchTime = System.currentTimeMillis();
if (touchTime - prevTouchTime < touchTimeout)
return;
prevTouchTime = touchTime;
//Do everything else
}