通过Intent将对象发送到服务而无需绑定

是否有可能通过一个意图发送一个对象到Android服务,而不实际绑定到服务? 或者,也许服务访问对象的另一种方式…

Solutions Collecting From Web of "通过Intent将对象发送到服务而无需绑定"

你可以这样调用startService(Intent):

MyObject obj = new MyObject(); Intent intent = new Intent(this, MyService.class); intent.putExtra("object", obj); startService(intent); 

你想发送的对象必须实现Parcelable (你可以参考这个Percelable指南 )

 class MyObject extends Object implements Parcelable { @Override public int describeContents() { // TODO Auto-generated method stub return 0; } @Override public void writeToParcel(Parcel dest, int flags) { // TODO Auto-generated method stub } } 

而对于服务,在onStart()或onStartCommand()方法中,对于api级别5和更新的方法,可以获取对象:

 MyObject obj = intent.getParcelableExtra("object"); 

就这样 :)

如果你不想实现Parcelable并且你的对象是可序列化的

用这个

在发件人活动

 Intent intent = new Intent(activity, MyActivity.class); Bundle bundle = new Bundle(); bundle.putSerializable("my object", myObject); intent.putExtras(bundle); startActivity(intent); 

在接收器中:

 myObject = (MyObject) getIntent().getExtras().getSerializable("my object"); 

为我工作正常尝试。 但是这个对象必须是可序列化的:)

就像Bino说的那样,如果你想通过一个intent把它传递给一个服务,你需要让你的自定义对象实现Parcelable接口。 这将使对象“序列化”在Android IPC明智的意义上,以便您可以将它们传递给Intent的对象putExtra(String,Parcelable)调用。

对于简单的原始types,已经有一堆setExtra(String, 原始types )方法。 不过,据我了解,这不是你的select,因此你应该去买一个包裹。