【问题标题】:Updating activity from service and onResume gives different results从服务和 onResume 更新活动会产生不同的结果
【发布时间】:2016-03-30 08:51:54
【问题描述】:

我正在尝试更新我的 Activity 中的 ProgressBar。

我设置了一个 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);
}

我正在从我的应用程序对象发送意图:

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

从服务调用 update 时,它​​显示正确的值,但从 Activity 的 onResume 调用它时,它显示第一次创建 Activity 时的值。

来自服务的日志(正确值):

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

在更新 Activity 之前,Service 中的 onSensorChange 中的值发生了变化:

MainApp.getInstance().daySteps = value;

是什么原因造成的,如何在 onResume 中获取正确的值?

【问题讨论】:

  • 那么,daySteps 在哪里/何时增加?
  • 已添加到问题中。

标签: android android-activity android-service


【解决方案1】:

很清楚发生了什么:

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 列包含进程ID 和线程ID)。由于您有 2 个单独的进程,因此您有 2 个单独的 Application 对象实例。

【讨论】:

  • 感谢您的洞察力!从清单中的服务声明中删除了 android:process 以使其工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-15
  • 1970-01-01
  • 2017-02-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多