是否可以通過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