2012-01-29 56 views
0

我有一個按鈕,當用戶點擊這個按鈕,它應該指定id更新數據的狀態我如何檢查是否一個ContentResolver的忙

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(或其他)是否忙(當前更新)然後我可以防止多個更新呼叫

回答

1

我會用timeStamps解決這個問題。每次調用更新方法時,都會創建一個帶有System.currentTimemillis()的時間戳,並檢查與上次保存的時間戳的差異。如果沒有達到閾值,則不會調用更新請求。

+0

我覺得有很多的方法來解決我的問題,使用時間限制,旗幟,聽衆......但是我想知道是否有任何Android系統的方法可以幫助我沒有這樣的黑客。謝謝。 – pleerock 2012-01-29 21:33:45

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 
} 
+0

請參閱我爲@dmaxi寫的評論。謝謝 – pleerock 2012-01-29 21:37:14

相關問題