Синхронизация GcmTaskService с изменениями базы данных
У меня проблема с GcmTaskService. Когда я пытаюсь обновить базу данных внутри действия перед созданием GcmTaskService, создается впечатление, что база данных не обновляется, а предыдущие значения все еще остаются. вот мой GcmTaskService
public class GcmSendInfoService extends GcmTaskService {
@Override
public int onRunTask(TaskParams taskParams) {
sendDataToserver(getApplicationContext());
Log.i("update Task", "service run for update");
return GcmNetworkManager.RESULT_SUCCESS;
}
@Override
public void onCreate() {
Log.i("onCreate sendToken Task", "send Token");
super.onCreate();
CreateSendInfoModel.createGcmNetwork(getApplicationContext());
}
}
Я называю этот метод в деятельности
private void resetPushFlags(Context context) {
Cursor userCursor = DataBase.TableCompanyUser.
getSomeObjsInTable(context);
while (!userCursor.isAfterLast()) {
SomeClass someObj= new SomeClass(userCursor);
someObj.setFlgFirst(false);
DataBase.TableCompanyUser.update(context, someObj);
userCursor.moveToNext();
}
}
метод обновления базы данных здесь
public static boolean update(Context context, SomeClass someObj) {
ContentValues contentValues = new ContentValues();
//id
contentValues.put(some._ID, some.getId());
//2
if (some.isFlgFirst()) {
contentValues.put(someObj.FLG_FIRST, 1);
} else {
contentValues.put(someObj.FLG_FIRST, 0);
}
String whereClause = Some._ID + " =? ";
String[] whereArgs = new String[]
{String.valueOf(someObj.getId())};
int numberOfRow = context.getContentResolver()
.update(SomeTable.CONTENT_URI, contentValues, whereClause, whereArgs);
return numberOfRow > 0;
}
Я создаю GcmServiceTask, как показано ниже
static long ONE_MINUTE_SECONDS = 60L;
static String PERIODIC_TAG = "PERIODIC_SEND_IS_TAG";
public static void createGcmNetwork(Context context) {
GcmNetworkManager mGcmNetworkManager = GcmNetworkManager.getInstance(context);
PeriodicTask task = new PeriodicTask.Builder()
.setService(GcmSendInfoService.class)
.setTag(PERIODIC_TAG)
.setPeriod(ONE_MINUTE_SECONDS)
.setPersisted(true)
.setRequiredNetwork(Task.NETWORK_STATE_CONNECTED)
.setUpdateCurrent(true)
.setRequiresCharging(false)
.build();
mGcmNetworkManager.schedule(task);
}
Итак, как я могу синхронизировать GcmTaskService с изменениями базы данных?