2012-01-12 3 views
0

Мне нужно переместить объект из одной активности в службу. Это моя попытка на стороне деятельности.Перемещение объекта из одного действия в службу

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

Я получаю ошибки для функции getIntent и waveform внутри getParcelable(). Любая помощь или руководство оценены.

ответ

0
  1. Услуги не имеют метода getIntent. Вместо этого намерение передается в качестве аргумента в метод onStart. Поэтому вы должны использовать этот параметр.
  2. Метод getParcelable принимает String, который в случае вашего тестового кода должен быть "test".
0

Для того, чтобы поместить объект в Bundle вам нужно сделать, что объекты Class реализовать Parcelable. Здесь вы можете увидеть, как использовать ParcelableAndroid Parcelable Example.

Тогда на вашем методе onStart (Intent intent, int startId) вы получите объект из Intent:

public void onStart(Intent intent, int startId) { 
     Wafeform waveform=intent.getExtras().getParcelable("test"); 
    } 
Смежные вопросы