将对象从一个Activity移动到Service

时间:2012-01-12 15:54:09

标签: android android-intent android-activity

我需要将对象从活动移动到服务。这是我在活动方面的尝试。

      Waveform waveform = new Waveform();
      Intent intent = new Intent(this, StimulationService.class);
      Bundle bundle = new Bundle();
      bundle.putParcelable("test", (Parcelable) waveform);
      intent.putExtras(bundle);
      startService(intent);

我已将此代码放在服务的onStart()函数中。

        Bundle bundle = this.getIntent().getExtras();
        if(bundle!=null)
        mWaveform = bundle.getParcelable(waveform);

我在getParcelable()中遇到函数“getIntent”和“waveform”的错误。 任何帮助或指导表示赞赏。

2 个答案:

答案 0 :(得分:0)

  1. 服务没有getIntent方法。而是将意图作为参数传递给onStart方法。所以你应该使用那个参数。
  2. getParcelable方法需要String,如果是您的测试代码,则应为"test"

答案 1 :(得分:0)

为了将对象放入Bundle,您需要使对象Class实现Parcelable。您可以在此处查看如何使用Parcelable Android Parcelable Example

然后在onStart (Intent intent, int startId)方法中,您可以从Intent

获取对象
  public void onStart(Intent intent, int startId) {
        Wafeform waveform=intent.getExtras().getParcelable("test");
  }