2010-05-16 29 views
7

Tôi có một hoạt động (A) và một dịch vụ (S) mà được bắt đầu bởi A như thế này:Trong Android: Cách gọi chức năng hoạt động từ một dịch vụ?

Intent i = new Intent(); 
i.putExtra("updateInterval", 10); 
i.setClassName("com.blah", "com.blah.S"); 
startService(i); 

A có một chức năng như thế này trong A:

public void someInfoArrived(Info i){...} 

Bây giờ tôi muốn để gọi A.someInfoArrived (i) từ bên trong S. Intent.putExtra không có phiên bản mà tôi có thể vượt qua một tham chiếu đối tượng, vv ... Xin vui lòng giúp đỡ!

PS: Cách khác xung quanh (A bỏ phiếu S cho thông tin mới) KHÔNG phải là những gì tôi cần. Tôi tìm thấy đủ thông tin về cách thực hiện điều đó.

Trả lời

14

Một tùy chọn là chuyển từ startService() sang bindService() và sử dụng mẫu ràng buộc cục bộ. Sau đó, bạn cần phải có một cuộc gọi một phương pháp trên S tại một số điểm để đăng ký một người nghe hoặc phương pháp gọi lại. Sau đó, S sẽ có một cái gì đó nó có thể gọi trên A khi một số thông tin đến. Bạn có thể xem dự án mẫu cho số here đó.

Hoặc, bạn có thể để startService() tại chỗ và sử dụng chương trình phát sóng Intent để cho S biết A về một số thông tin đến. Bạn có thể xem dự án mẫu thể hiện một phát sóng Intenthere.

+1

Cảm ơn bạn, đó chính xác là những gì tôi đang tìm kiếm! Tôi hy vọng và tin tưởng vào các diễn đàn đã được khôi phục :) – nex

+0

Chỉ cần thực hiện gợi ý thứ hai của bạn và nó hoạt động như một sự quyến rũ. cảm ơn một lần nữa! – nex

Các vấn đề liên quan