Sự khác biệt giữa dịch vụ và máy thu phát sóng là gì?


14

Tôi tiếp tục nghe về các dịch vụmáy thu phát sóng . Sự khác biệt giữa chúng là gì và chúng ảnh hưởng đến hoạt động của điện thoại Android theo quan điểm của tôi như thế nào?


Bạn biết thay vì tạo cổng trên lớp TCP, chúng tôi luôn tạo bộ thu phát sóng để tiết kiệm pin và xử lý rất nhiều .. Khi một số sự kiện xảy ra trong Android .... chương trình phát được gửi trong điện thoại tới tất cả các ứng dụng .. Và nếu bạn có bộ thu phát đến sự kiện đó được viết ,,, nó sẽ được tự động gọi. Về mặt kỹ thuật, sự kiện đã xảy ra được gọi là ý định trong điều khoản của Android
Rahul Raina

Câu trả lời:


27

Các ứng dụng Android có ba loại thành phần. Nói chung, người dùng không cần biết về chúng: chúng là cách để các tác giả ứng dụng lập trình các hành vi cụ thể vào ứng dụng của họ. Nhưng nếu bạn đang theo dõi hành vi của ứng dụng một cách chặt chẽ, chẳng hạn như với trình quản lý tác vụ hoặc nếu bạn đang tự động hóa mọi thứ với một ứng dụng như Trình quản lý, sẽ rất hữu ích để hiểu cách chúng khớp với nhau trong hệ thống.

Một hoạt động là loại thành phần quen thuộc nhất: đó là một cửa sổ bạn có thể thấy: toàn màn hình hoặc kích thước hộp thoại. Một hoạt động chỉ chạy trong khi nó hiển thị trên màn hình. Khi bạn rời khỏi hoạt động, Android sẽ giữ ứng dụng đó trong bộ nhớ sẵn sàng để bắt đầu lại, nhưng hoạt động sẽ không chạy, nghĩa là nó sẽ không sử dụng pin hoặc mạng. Một ứng dụng bắt đầu một hoạt động bằng cách sử dụng một ý định . Mục đích có thể chỉ định rõ ràng hoạt động nào sẽ bắt đầu hoặc nó có thể chỉ định một hành động để thực hiện (chẳng hạn như mở một tệp cụ thể). Nếu nhiều hơn một hoạt động có thể "xử lý" ý định, bạn sẽ thấy hộp thoại yêu cầu bạn chọn một hoạt động.

Một dịch vụ là một thành phần ứng dụng khác. Khi một thành phần khác (có thể là một hoạt động hoặc dịch vụ khác) đã bắt đầu một dịch vụ, nó sẽ chạy trong nền cho đến khi nó dừng lại. Điều này có nghĩa là một dịch vụ có thể giúp điện thoại của bạn luôn hoạt động (sử dụng khóa đánh thức ), hết pin hoặc sử dụng nhiều dữ liệu mạng mà không có bất cứ điều gì hiển thị trên màn hình.

Ứng dụng có thể sử dụng các dịch vụ để thực hiện các quy trình chạy dài trong nền, chẳng hạn như tải xuống tệp từ máy chủ hoặc kiểm tra email hoặc kiểm tra vị trí của bạn. Mặc dù các dịch vụ không hiển thị hoặc tương tác trực tiếp với bạn, chúng vẫn hiển thị trong danh sách "Ứng dụng đang chạy". Từ Cài đặt ứng dụng, chọn Apps hay ứng dụng quản lý , và sau đó chạy . Bạn có thể dừng dịch vụ theo cách đó, nhưng thường không cần thiết. Vì các dịch vụ không hiển thị trực tiếp, Android coi chúng ít quan trọng hơn các hoạt động, vì vậy chúng sẽ là người đầu tiên bị giết khi điện thoại của bạn cần thêm bộ nhớ.

Máy thu phát sóng là loại thành phần thứ ba. Giống như các dịch vụ, chúng chỉ tồn tại trong nền và không tương tác trực tiếp với bạn. Nhưng không giống như các dịch vụ, chúng không thể chạy hoặc thực hiện các tác vụ dài: chúng tồn tại để đáp ứng với các sự kiện. Và không giống như các hoạt động và dịch vụ, nhiều hơn một máy thu phát sóng có thể được bắt đầu trong một lần.

Một thành phần phát ra một ý định, có thể là một ứng dụng, nhưng thường xuyên hơn mà không chỉ định một ứng dụng cụ thể. Trong trường hợp này, ý định thường đại diện cho một sự kiện đã xảy ra, chẳng hạn như pin sắp hết. Hệ thống tìm thấy tất cả các máy thu quảng bá đã đăng ký sở thích (sử dụng bộ lọc ý định ) và chạy lần lượt từng bộ thu. Mỗi máy thu quảng bá có thể phản ứng ngay lập tức, ví dụ bằng cách tạo thông báo hoặc có thể bắt đầu dịch vụ hoặc hoạt động để thực hiện thêm hành động. Ngay khi người nhận phát sóng đã xử lý sự kiện, nó sẽ bị dừng và sẽ không chạy lại cho đến khi một sự kiện tương tự khác được phát.

Một ví dụ về cả ba thành phần hoạt động cùng nhau là khi bạn tải xuống một ứng dụng từ Google Play. Đầu tiên, hoạt động Google Play cung cấp giao diện trực quan để bạn chọn nội dung cần tải xuống. Danh sách các ứng dụng có thể là một hoạt động; nhấp vào nút "cài đặt" sẽ bắt đầu một hoạt động khác để hiển thị hộp thoại xác nhận hoặc thanh toán. Khi bạn xác nhận, hoạt động hộp thoại bắt đầu một dịch vụ. Dịch vụ sẽ tiếp tục tải xuống nội dung ngay cả khi hoạt động đã kết thúc và không còn chạy.

Nhưng có lẽ điện thoại mất kết nối Internet trong khi ứng dụng mới đang tải xuống. Nếu điều này xảy ra, dịch vụ tải xuống của Google Play sẽ đăng ký một máy thu quảng bá, với bộ lọc ý định để nói rằng nó quan tâm đến các thay đổi kết nối mạng và sau đó dịch vụ sẽ tự dừng. Khi điện thoại kết nối với Internet, hệ thống sẽ phát một sự kiện. Android sẽ khởi động trình thu phát mà dịch vụ Google Play đã đăng ký, cùng với mọi trình thu phát khác đang chờ sự kiện đó. Trong trường hợp này, máy thu quảng bá sẽ bắt đầu lại dịch vụ tải xuống. Dịch vụ sẽ tạo thông báo khi quá trình tải xuống được tiến hành và khi kết thúc, nó sẽ gửi chương trình phát riêng để thông báo cho các ứng dụng khác rằng gói mới đã được cài đặt và sau đó sẽ tự dừng. Đổi lại, điều này sẽ bắt đầu thu phát từ các ứng dụng khác,

Tóm tắt:-

  • Một hoạt động đại diện cho một cửa sổ trên màn hình; một dịch vụ thực hiện một nhiệm vụ nền có thể chạy dài; một máy thu phát sóng chạy trong một thời gian ngắn, để xử lý một sự kiện.
  • Cả ba đều bắt đầu sử dụng ý định, nhưng sử dụng một cơ chế khác. Ứng dụng khởi chạy phải nêu rõ loại thành phần nào sẽ bắt đầu (bằng cách gọi một phương thức khác nhau trong mỗi trường hợp).
  • Khi một ứng dụng bắt đầu một hoạt động bằng cách sử dụng một mục đích, nó chỉ bắt đầu một hoạt động (có thể hiển thị hộp thoại "Hoàn thành hành động bằng cách sử dụng ..." để cho phép bạn chọn hoạt động nào) và điều tương tự cũng xảy ra với các dịch vụ, nhưng việc truyền phát một ý định có thể bắt đầu một số phát sóng máy thu, có thể từ các ứng dụng khác nhau.
  • Là người dùng, bạn tương tác với các hoạt động trực tiếp; bạn không tương tác với các dịch vụ, nhưng chúng có thể làm chậm điện thoại và tiêu tốn tài nguyên; bạn không tương tác với các máy thu phát sóng và vì chúng tồn tại trong thời gian ngắn nên bạn không cần phải lo lắng về việc quản lý chúng.

Một câu trả lời rất hữu ích. Tôi chỉ muốn xác nhận điều gì đó: điều gì xảy ra với các ứng dụng bị vô hiệu hóa bởi người dùng? Android có bao giờ bắt đầu máy thu phát sóng của họ cho các ý định mà họ đã đăng ký không? Hoặc những ứng dụng bị vô hiệu hóa có thể chạy dịch vụ của họ trong nền không? Tại sao nút Force-Stop không bị mờ đi đối với các ứng dụng bị vô hiệu hóa ngay cả sau khi khởi động lại? Rõ ràng với tôi rằng các hoạt động của họ không thể được đưa ra.
Firelord

@Firelord Nếu bạn có một câu hỏi mới, bạn nên đăng nó dưới dạng một câu hỏi mới. Nhận xét không cho phép câu trả lời sâu sắc và không làm cho câu hỏi của bạn có thể tìm thấy đối với những khách truy cập khác.
Dan Hulme

bài tuyệt vời, nhưng trên thực tế, có bốn thành phần. Nhà cung cấp nội dung bị thiếu.
Alexandre Martin
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.