是否可以通过Intent将对象发送到Android服务而无需实际绑定到服务?或者,也许另一种为服务访问对象...通过Intent将对象发送到服务而无需绑定
14
A
回答
24
可以调用startService(意向)是这样的:
MyObject obj = new MyObject();
Intent intent = new Intent(this, MyService.class);
intent.putExtra("object", obj);
startService(intent);
要发送必须实现Parcelable对象(可以参考这个Percelable guide )
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");
这是所有:)
1
像BINO说,你需要让你的自定义对象实现Parcelable接口,如果你想通过一个意图将它传递给一个服务。这将使Android对象成为“序列化”的对象,以便您可以将它们传递给Intent的对象putExtra(String,Parcelable)调用。
对于简单的原始类型,已经有一堆setExtra(String,原始类型)方法。然而,据我了解,这不是您的选择,因此您应该购买包裹。
8
如果您不希望实现Parcelable和你的对象是可序列化
使用本
发信人Activiy
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");
适合我的工作尝试。但该对象必须可序列化:)
+0
对我来说,如果工作,但我不得不改变的东西,在发送部分: 'intent.putExtra(“传递对象”,bundle.getSerializable(“我的对象”));' 而在接收部分: (myObject)intent.getExtras()。getSerializable(“传递的对象”);'' – Ruocco 2015-06-12 14:12:18
相关问题
- 1. 如何通过intent发送对象
- 2. 通过retrofit2将文件发送到服务器作为对象
- 3. 通过http发送JSON对象到服务器GET GET
- 4. 无法发送对象SOAP Web服务
- 5. 通过Socket将复杂对象从Java客户端发送到C服务器
- 6. 通过套接字将Java文件对象发送到服务器
- 7. 如何通过PHP发送大文件,而无需POST服务器限制
- 8. 发送对象RESTful服务
- 9. 绑定通过jquery post发送的对象
- 10. 通过引用将对象从服务对象绑定到控制器中的对象
- 11. 用C#发送对象到服务器#
- 12. 发送JSON对象到WCF Rest服务
- 13. 通过tcp发送可发送对象
- 14. 通过蓝牙通过蓝牙发送消息,而无需配对linux
- 15. 通过Post发送Json对象到Laravel
- 16. 是否可以使用gcm发送推送通知,而无需服务器?
- 17. Xamarin - 如何发送推送通知,而无需使用其他服务
- 18. Android:如何通过绑定发送带有成员对象的对象?
- 19. 如何通过Intent发送base64图像?
- 20. 通过intent发送相机图片
- 21. 将JSON POST请求发送到外部域而无需访问服务器
- 22. 无法将Cookie发送到服务器
- 23. 如何将数据发送到互联网,而无需android.permission.INTERNET对
- 24. 无法将活动绑定到服务
- 25. 如何通过intent发送数据而不使用finish()函数?
- 26. 将业务对象绑定到ASP.NET DataList
- 27. 无法将JSON对象发送到XMLHttpRequest
- 28. 当我尝试通过web服务将对象从BlackBerry发送到服务器时出现ServerException
- 29. 无法将对象绑定到ListBox
- 30. 如何通过服务发送通知
如何向包裹发送多个单一数据值?我需要发送两个字符串。 – jax 2010-02-12 18:10:28
intent.putExtra(“my.first.string”,“something”); intent.putExtra(“my.second.string”,“something else”); – hackbod 2010-02-12 19:09:02
这仍然不适合我。我已经完成了上述所有,但仍然有问题。我如何通过Parcelable传递整个对象的状态?我知道我可以发送像String和Arrays这样的基本类型,但是按对象包含比这些更复杂的类。 – jax 2010-02-13 05:26:30