2010-07-17 22 views
5

Tôi đang cố gắng hiểu sự khác nhau giữa dịch vụ và bộ thu sóng là gì, khi tôi nhìn thấy chúng có thể thực hiện tương tự.sự khác biệt giữa các dịch vụ và máy thu phát sóng

Ví dụ: tôi có một ứng dụng: App1 cung cấp dịch vụ được gọi là ToastHelloWorld, chỉ tạo Toast và stopSelf(). Tôi hiển thị nó với các ứng dụng khác bằng bộ lọc ý định với tên hành động: "com.test.HelloToast"

Bây giờ tôi có một ứng dụng khác: App2 tôi muốn sử dụng ngầm dịch vụ có hành động "com.test. HelloToast "vì vậy tôi gọi startService (new Intent (" com.test.HelloToast "));

và nó hoạt động.

Tại sao tôi sử dụng bộ thu phát sóng khi tôi có thể thực hiện mọi thứ với dịch vụ và không có giới hạn về giới hạn thực hiện 5 giây ?.

Tôi biết hầu hết "sự kiện hệ thống" được hiển thị qua chương trình phát sóng 'nhưng không thể chúng được xuất bản dưới dạng Mục đích dịch vụ?

Trả lời

4

Mục đích phát sóng thường được gửi đến tất cả BroadcastReceivers đã đăng ký cho mục đích đó. (Có một ngoại lệ với ý định đặt hàng, nơi người nhận có thể hủy bỏ việc phân phối cho người nhận ưu tiên thấp hơn) Mục đích mà dịch vụ bắt đầu hoặc ràng buộc chỉ được gửi đến trường hợp Dịch vụ phù hợp.

Một số ý định phát sóng bị dính. Điều đó có nghĩa là chúng có thể đã được gửi trong quá khứ và sẽ được gửi khi ứng dụng của bạn đăng ký người nhận.

3

Dịch vụ được sử dụng khi bạn muốn làm điều gì đó trong nền, bất kỳ quá trình chạy dài nào cũng có thể được thực hiện bằng Dịch vụ trong nền. Ví dụ: bạn muốn phát nhạc khi ứng dụng của bạn đến gần. Trong trường hợp đó dịch vụ sẽ chạy trong nền với âm nhạc.

BroadcastReceiver được sử dụng khi bạn muốn kích hoạt một số nội dung hoặc mã trong một số sự kiện. Ví dụ, sự kiện có thể là trên khởi động của thiết bị. Nếu bạn muốn thực hiện điều gì đó khi thiết bị Khởi động, ngày giờ thay đổi, v.v ...

+1

Bạn cũng có thể khởi động Dịch vụ khi khởi động thiết bị. –

3

Sự khác biệt lớn nhất là BroadcastReceiver chạy trên luồng giao diện người dùng chính theo mặc định (bạn có thể chỉ định một chủ đề khác), và do đó giới hạn trong quy tắc thi hành 10 giây. Dịch vụ, mặt khác, có thể chạy vô thời hạn cho đến khi hệ điều hành quyết định tiêu diệt chúng.

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