Синхронизация 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 с изменениями базы данных?

0 ответов

Другие вопросы по тегам