2016-03-30 3 views
1

Я пытаюсь обновить ProgressBar в своей деятельности.Обновление активности от службы и onResume дает различные результаты

Я настроил BroadcastReceiver, чтобы вызвать изменение.

Функция, которая делает фактическое изменение в деятельности:

private void updateStepProgress(Intent intent){ 
    int steps = intent.getIntExtra(Keys.EXTRA_STEPS, MainApp.getInstance().daySteps); 
    ProgressBar progress = (ProgressBar) findViewById(R.id.progressBar); 
    Log.d("STEP_UPDATE_ACTIVITY", steps+""); 
    progress.setProgress(steps); 
} 

Я посылаю умысел моего объекта Application:

public void updateSteps(){ 
    Intent intent = new Intent(StepCounterManager.UPDATE_STEP_UI_EVENT); 
    intent.putExtra(Keys.EXTRA_STEPS, daySteps); 
    Log.d("STEP_UPDATE_MAIN", daySteps+""); 
    sendBroadcast(intent); 
} 

Я звоню обновление так:

MainApp.getInstance().updateSteps(); 

При вызове обновления от службы отображается правильное значение, но при вызове его из Закона ivity onResume, он показывает значение, которое было там, когда активность была впервые создана.

Бревна от службы (правильные значения):

03-30 11:43:10.243 24523-24523/ee.greaton.tervis:StepServiceLock D/STEP_UPDATE_MAIN: 1255 
03-30 11:43:10.248 24468-24468/ee.greaton.tervis D/STEP_UPDATE_ACTIVITY: 1255 
03-30 11:43:10.442 24523-24523/ee.greaton.tervis:StepServiceLock D/STEP_UPDATE_MAIN: 1256 
03-30 11:43:10.448 24468-24468/ee.greaton.tervis D/STEP_UPDATE_ACTIVITY: 1256 

Бревна из onResume сразу после (1245 было значение при создании Activity):

03-30 11:43:12.049 24468-24468/ee.greaton.tervis D/STEP_UPDATE_MAIN: 1245 
03-30 11:43:12.074 24468-24468/ee.greaton.tervis D/STEP_UPDATE_ACTIVITY: 1245 

значение получает изменилось в onSensorChange в Служба непосредственно перед обновлением деятельности:

MainApp.getInstance().daySteps = value; 

Что вызывает это и как получить правильные значения в onResume?

+0

Итак, где/когда 'daySteps' увеличиваются? –

+0

Добавлен вопрос. – p3rs0n

ответ

0

Это довольно ясно, что происходит:

03-30 11:43:10.442 24523-24523/ee.greaton.tervis:StepServiceLock D/STEP_UPDATE_MAIN: 1256 
03-30 11:43:10.448 24468-24468/ee.greaton.tervis D/STEP_UPDATE_ACTIVITY: 1256 

Здесь можно увидеть, что Service и Activity работают в 2-х отдельных процессов (в LogCat, 3-й столбец содержит идентификатор процесса и идентификатор потока). Поскольку у вас есть два отдельных процесса, у вас есть 2 отдельных экземпляра объекта Application.

+1

Спасибо за понимание! Удален андроид: процесс из объявления сервиса в манифесте, чтобы заставить его работать. – p3rs0n

Смежные вопросы