Có thể gửi đối tượng đến Dịch vụ Android thông qua Mục đích mà không thực sự ràng buộc với dịch vụ không? Hoặc có thể một cách khác cho Dịch vụ truy cập đối tượng ...Gửi một đối tượng đến một dịch vụ thông qua Intent mà không cần ràng buộc
Trả lời
Bạn có thể gọi startService (Ý định) như thế này:
MyObject obj = new MyObject();
Intent intent = new Intent(this, MyService.class);
intent.putExtra("object", obj);
startService(intent);
Đối tượng mà bạn muốn gửi phải thực hiện Parcelable (bạn có thể tham khảo Percelable guide này)
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
}
}
và với các dịch vụ, trong phương thức onStart() hoặc onStartCommand() cho cấp api 5 và mới hơn, bạn có thể nhận được các đối tượng:
MyObject obj = intent.getParcelableExtra("object");
Đó là tất cả :)
Giống như Bino đã nói, bạn cần phải có đối tượng tùy chỉnh của bạn triển khai giao diện Parcelable nếu bạn muốn chuyển nó tới dịch vụ thông qua mục đích. Điều này sẽ làm cho đối tượng "có thể tuần tự hóa" trong cảm giác khôn ngoan của Android IPC để bạn có thể truyền chúng tới đối tượng của một đối tượng Intent (String, Parcelable) của đối tượng Intent.
Đối với các kiểu nguyên thủy đơn giản, đã có một loạt các phương thức setExtra (String, nguyên thủy). Tuy nhiên, như tôi hiểu bạn, đây không phải là một lựa chọn cho bạn, đó là lý do tại sao bạn nên đi mua bưu kiện.
Nếu bạn không muốn thực hiện Parcelable và đối tượng của bạn là serializable
sử dụng này
Trong người gửi Activiy
Intent intent = new Intent(activity, MyActivity.class);
Bundle bundle = new Bundle();
bundle.putSerializable("my object", myObject);
intent.putExtras(bundle);
startActivity(intent);
Trong người nhận:
myObject = (MyObject) getIntent().getExtras().getSerializable("my object");
Làm việc tốt cho tôi thử. Nhưng đối tượng phải được serializable :)
Đối với tôi nếu làm việc, nhưng tôi phải thay đổi điều gì đó, trên phần gửi: 'intent.putExtra (" đối tượng được truyền ", bundle.getSerializable (" đối tượng của tôi "));' Và trên phần nhận: 'myObject = (MyObject) intent.getExtras(). GetSerializable (" đối tượng được truyền ");' – Ruocco
- 1. Dịch vụ từ xa có thể gửi tin nhắn đến một Hoạt động bị ràng buộc như thế nào?
- 2. gửi một đối tượng javascript thông qua WebSockets với faye
- 3. Lưu trữ dịch vụ WCF với ràng buộc net.tcp thông qua Trình quản lý IIS 7.5
- 4. Ràng buộc với một dịch vụ từ một ứng dụng khác
- 5. Gửi một đối tượng qua Internet
- 6. Cách gửi PendingIntent đến dịch vụ của tôi bên trong Intent
- 7. Gọi một dịch vụ WCF mà không cần tạo một Assembly
- 8. Android: Chuyển AppWidgetId đến một Dịch vụ
- 9. Gửi đối tượng java đến một WebService còn lại
- 10. Dịch vụ Android: onBind (Intent) và onUnbind (Intent) được gọi chỉ một lần
- 11. Làm thế nào để cấu hình các dịch vụ WCF để làm việc thông qua HTTPS mà không cần HTTP ràng buộc?
- 12. Ràng buộc DataGridViewColumn đến đối tượng cấp 2
- 13. WCF MSMQ ràng buộc với một dịch vụ IIS - làm thế nào để nhanh chóng dịch vụ?
- 14. jQuery ràng buộc sự kiện popstate không được thông qua
- 15. std :: ràng buộc một hàm ràng buộc
- 16. Android - Bắt đầu một dịch vụ với thông tin bổ sung thông qua put/getExtra
- 17. Mở ứng dụng email khách thông qua Intent (nhưng không gửi tin nhắn)
- 18. Truyền đối số cho BroadcastReceiver thông qua Intent trong Android
- 19. Làm thế nào để bạn vượt qua tăng :: ràng buộc đối tượng với một chức năng?
- 20. event.pageX - Sử dụng sự kiện JQuery trong một hàm không bị ràng buộc thông qua JQuery?
- 21. Sử dụng netcat để gửi gói UDP mà không cần ràng buộc
- 22. START_STICKY, dịch vụ Android nền trước biến mất mà không cần thông báo
- 23. Làm cách nào để tuần tự hóa một đối tượng ẩn danh để gửi qua dịch vụ web SOAP?
- 24. Spring MVC 3 - Ràng buộc một đối tượng 'bất biến' thành một hình thức
- 25. Gửi Email trong dịch vụ (mà không nhắc người dùng)
- 26. gửi dữ liệu đến một trang web từ một dịch vụ WCF
- 27. Tạo đối tượng trong Symfony2 mà không cần Doctrine
- 28. Django - Thi một nhiệm vụ thông qua cần tây từ một mô hình
- 29. Dịch vụ thông báo qua email
- 30. ràng buộc khi tự động tải một đối tượng được chia sẻ từ một đối tượng được chia sẻ khác?
Làm thế nào để gửi nhiều hơn một giá trị dữ liệu duy nhất cho bưu kiện? Tôi có hai chuỗi Tôi cần gửi. – jax
intent.putExtra ("my.first.string", "something"); intent.putExtra ("my.second.string", "something else"); – hackbod
Điều này vẫn không hoạt động đối với tôi. Tôi đã làm tất cả những điều trên nhưng vẫn gặp sự cố. Làm thế nào tôi có nghĩa là để vượt qua toàn bộ trạng thái của đối tượng thông qua Parcelable? Tôi biết tôi có thể gửi các loại cơ bản như String và mảng nhưng bởi đối tượng chứa các lớp phức tạp hơn chỉ là những. – jax