2017-08-30 17 views
0

1日に1度真夜中にデータベースに値を挿入します。しかし、私は私のアプリケーションを再起動すると、別のエントリを挿入します。Android:アプリケーションを再起動するとデータベースエントリが挿入される

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); 
} 

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(); 
       } 
      } 

これは、実際にエントリを作る方法がある:これは、エントリを作成メソッドを呼び出すonReceive方法、の一部である

:私は私のミスを見つけるカント

正しい時刻にonReceiveメソッドが呼び出されますが、私はそれを確信しています。 だから私はアプリの開始時にそのエントリを作る理由を理解していない。

+0

addDayCheckメソッドは、常に新しいエントリを意味するonReceiveメソッドで呼び出されます。 –

+0

右ですが、全体としてonReceiveメソッドは1日に1回しか呼び出されません。 –

+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); 
    } 

私はこの方法は、今日のエントリが既に追加されているか否かをチェックすることによって、あなたはそれが真夜中だかどうかをチェックすることでこれを改善し、新しいエントリを追加するに進んで、その場合にすることができ、それをやっているだろう。

関連する問題