Android 如何将整数值从服务发送到片段?

Android 如何将整数值从服务发送到片段?,android,android-service,Android,Android Service,我试图从我的步骤计数器服务中获取数据(即步骤数),以显示在片段上。这是我的服务: public class StepCounterService extends Service implements SensorEventListener { SensorManager sensorManager; boolean running = false; static int initialStepCount = 0; static int stepCount = 0; @Override pub

我试图从我的步骤计数器服务中获取数据(即步骤数),以显示在片段上。这是我的服务:

public class StepCounterService extends Service implements SensorEventListener {

SensorManager sensorManager;
boolean running = false;
static int initialStepCount = 0;
static int stepCount = 0;

@Override
public void onCreate() {
    super.onCreate();

    sensorManager = (SensorManager) this.getSystemService(Context.SENSOR_SERVICE);

}

@Override
public void onSensorChanged(SensorEvent event) {
    if (initialStepCount == 0) {
        initialStepCount = (int) event.values[0];
    }

    stepCount = (int)event.values[0] - initialStepCount;

    if (running) {
        // tv_steps.setText(String.valueOf(stepCount));
    }
}

@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {

}

@Override
public IBinder onBind(Intent intent) {
    return null;
}

@Override
public int onStartCommand(Intent intent, int flags, int startId) {

    running = true;
    Sensor countSensor = sensorManager.getDefaultSensor(Sensor.TYPE_STEP_COUNTER);
    if (countSensor != null) {
        sensorManager.registerListener(this, countSensor, SensorManager.SENSOR_DELAY_NORMAL);
    } else {
    }
    return super.onStartCommand(intent,flags,startId);
}

@Override
public void onDestroy() {

}
}

如何发送要在TextView的片段中显示的stepCount值?最好的方法是什么?

要在服务和其他组件之间发送数据,可以使用绑定服务;这是Android在组件间通信的最佳方式。

实现这一点的方法很少:

  • 使用
    LocalBroadCastReceiver
  • 使用。我更喜欢这种方式,因为它比前一种只需几行代码的方式简单得多:

    EventBus.getDefault().post(新建YourObjectWithANumber())


  • 在您的特定情况下,最好将步骤数保存并保留在文件或数据库中,这样即使在应用程序重新启动时,您也可以在UI中显示它that@MD有关于如何做的提示吗?你想如何调用片段?可能的解决方案:您可以将值设置为公共静态变量或使用Bundle@MD我可以使用Intent吗?@EliasFazel我有一个导航抽屉,我从中调用片段,我希望在启动MainActivity时获得值,以便显示它。