2017-08-30 54 views
0

我每天午夜在我的數據庫中插入一個值。但是,當我重新啓動我的應用程序時,它會插入另一個條目。我找不到我的錯誤:Android:重新啓動我的應用程序插入數據庫條目

這是的onReceive方法,它調用,使進入該方法的一部分:

if (mTaskList != null && mTaskList.size() > 0) { 
       DatabaseHelper mDbHelper = new DatabaseHelper(context); 
       Calendar c = Calendar.getInstance(); 
       c.add(Calendar.DATE, -1); 
       SimpleDateFormat df = new SimpleDateFormat("dd-MM-yyyy"); 
       String date = df.format(c.getTime()); 
       String millisIdentifier; 
       int doneState; 

       for (int i = 0; i < mTaskList.size(); i++) { 
        millisIdentifier = mTaskList.get(i).getMilliIdentifier(); 
        doneState = mTaskList.get(i).getDoneTodayValue(); 

        mDbHelper.addDayCheck(millisIdentifier, date, doneState); 

        mTaskList.get(i).shiftDayChecks(); 
        mTaskList.get(i).resetTimeLeft(); 
       } 
      } 

這是實際上使進入方法:

public void addDayCheck(String millisIdentifier, String date, int doneState){ 
    SQLiteDatabase db = getWritableDatabase(); 

    ContentValues values = new ContentValues(); 
    values.put(COLUMN_DATE, date); 
    values.put(COLUMN_DONE_STATE, doneState); 

    db.insert(millisIdentifier, null, values); 
} 

onreceive方法在正確的時間被調用,我相信這一點。 所以我不明白爲什麼它使應用程序的開始條目。

+0

addDayCheck方法總是在onReceive方法中調用,這意味着一個新條目。 –

+0

沒錯,但是onReceive方法作爲一個整體每天只能調用一次。 –

+0

你能粘貼激發廣播的代碼嗎? – iTurki

回答

0
public void addDayCheck(String millisIdentifier, String date, int doneState) { 
     SQLiteDatabase db = getWritableDatabase(); 
     //read database and return a cursor 
     Cursor cursor; 
     //............ 
     //............. 
     if (cursor != null && cursor.getCount() > 0) { 
      cursor.moveToFirst(); 
      do { 
       String olddate = cursor.getString(cursor.getColumnIndex(COLUMN_DATE)); 
       if (olddate.equals(date)) 
        return; 
       //You don't have to check if it's midnight again since there's no input matching today 
      } while (cursor.moveToNext()); 
     } 
     ContentValues values = new ContentValues(); 
     values.put(COLUMN_DATE, date); 
     values.put(COLUMN_DONE_STATE, doneState); 

     db.insert(millisIdentifier, null, values); 
    } 

我會做這樣一來,如果通過今天的入口已經添加檢查,您可以通過檢查,如果它是午夜改善這一點,在這種情況下,你繼續添加新條目。

相關問題