Nghĩa của Broadcast Receiver android là gì – Caigiday.com

Đánh giá của bạn post

Bài đăng này là phần 12 trên 16 trong loạt bài tự học lập trình Android trong 24 giờ của chúng tôi

Bạn đã bao giờ nghe nói về radio trong Android chưa? Nếu không, tôi sẽ nói cho bạn biết! Đây là một máy thu phát sóng. Vậy thiết bị thu phát sóng Android là gì? Đúng như tên gọi, nhiệm vụ chính của bộ thu phát sóng android là truyền thông tin trong hệ thống và chỉ những ứng dụng đã đăng ký mới có thể nhận được.

Trong bài viết này, tôi sẽ chia sẻ tất cả những thông tin quan trọng nhất về tương lai của phát trực tuyến trên Android.

Từ đó bạn có thể dễ dàng áp dụng và sử dụng ứng dụng của mình một cách hiệu quả

Tương lai của phát trực tuyến trên android là gì?

Danh mục bài viết

  • 1. Tương lai của phát trực tuyến trên Android là gì?
  • 2. Tạo một lớp thu phát sóng trong Android
  • 3. Đăng ký Bộ thu phát sóng Android
    • # Phương pháp 1: Ghi bộ thu phát sóng trong tệp kê khai
    • # Tùy chọn 2: Sử dụng mã để đăng ký bộ thu phát sóng
    • Vậy cách tốt nhất để đăng ký đầu thu là gì?
  • 4. Gửi sự kiện / ý định phát sóng
  • Các loại phát sóng
  • 5. Gửi một BroadcastManager cục bộ trong ứng dụng
  • 6. Quyền
  • 7. Tóm tắt
    • Các video liên quan

1. Tương lai của phát trực tuyến trên Android là gì?

Android Broadcast Receiver là một thành phần mà bạn có thể đăng ký các sự kiện hệ thống hoặc ứng dụng. Bạn sẽ nhận được thông báo về các sự kiện đã ghi trước đó. Các chương trình phát sóng có thể bắt nguồn từ hệ thống hoặc từ các ứng dụng

Ví dụ, một số chương trình phát sóng từ hệ thống như thông báo pin yếu, bật và tắt màn hình, kết nối hoặc ngắt kết nối thiết bị ngoại vi

Với cấp độ ứng dụng có thể kể đến khi tải một tập tin nhạc. Ứng dụng nghe nhạc này sẽ nhận được thông báo về việc tải xuống và sau khi kết thúc, ứng dụng này sẽ đưa bài hát này vào danh sách phát để phát. Để làm được điều này, cần có ứng dụng âm nhạc để đăng ký sự kiện.

không thích Hoạt động, máy thu phát sóng trong android không có giao diện người dùng. Mặc dù nó có thể tạo ra thông báo trên thanh trạng thái.

Để truyền thông tin, máy thu quảng bá sử dụng mục đích để đóng gói dữ liệu. Nếu bạn đã đọc bài viết của tôi về Ý định trong Android Sau đó, sẽ dễ dàng hiểu được tương lai của phát sóng trong Android.

Bài viết này sẽ tập trung vào 3 vấn đề chính:

    Cách tạo bộ thu phát sóng Cách đăng ký nhận thông báo từ bộ thu phát sóng Cách gửi chương trình phát sóng sự kiện / Ý định Vấn đề bảo mật khi sử dụng bộ thu phát sóng

2. Tạo một lớp thu phát sóng trong Android

Làm theo đoạn mã dưới đây để tìm hiểu cách tạo bộ thu phát sóng trong Android: class MyReceiver: BroadcastReceiver () {fun onReceive (context: context, target: target) {// Phương thức này được gọi khi BroadcastReceiver nhận được ý định phát. Toast.makeText (context, “Action:” + Ý định.getAction (), Toast.LENGTH_SHORT) .show ()}}

Chúng tôi sẽ tạo một lớp có tên MyReciever và kế thừa từ tương lai phát sóng. Vì BroadcastReceiver là một lớp trừu tượng, chúng ta phải ghi đè lên hàm onReceiver (). Khi một sự kiện xảy ra, Android sẽ gọi hàm onReceiver ().

Tôi nhận thấy rằng hàm onReceiver () có hai tham số được truyền vào: chủ đíchNoi Ruth. Với ý định, bạn sẽ nhận được thông tin cần thiết từ hệ thống.

Và ngữ cảnh sẽ giúp bạn làm điều gì đó như bắt đầu một hoạt động hoặc dịch vụ như Context.startService (ý định mới (điều này, TestService.class));

3. Đăng ký Bộ thu phát sóng Android

Chúng tôi đã hoàn tất việc tạo bộ thu phát sóng trong Android, nhưng để thiết bị nhận được thông báo từ các hệ thống hoặc ứng dụng khác, nó cần phải được đăng ký. Có hai cách để đăng ký:

    Đăng ký với tờ khai trong tệp kê khai hoặc đăng ký với Mã Kotlin

# Phương pháp 1: Ghi bộ thu phát sóng trong tệp kê khai

Đây có thể là cách dễ nhất

Xem thêm

 

Nghĩa của Tứ bất hoại tịnh là gì

Chúng tôi sử dụng dấu hiệu Để đăng ký với bộ lọc ý định.

Nếu bạn quên bộ lọc ý định là gì, hãy đọc lại bài viết này về ý định: Ý định trong Android: Vai trò và cách sử dụng

Về cơ bản, có thể hiểu: ứng dụng sử dụng bộ lọc ý định để thông báo cho hệ thống rằng ứng dụng của tôi được đăng ký nhận thông báo.

Nhưng không phải tất cả mọi thứ, mà chỉ những thông báo thích hợp mới nhận được. Tại đây, chỉ các thông báo sẽ được nhận với action: com.pycitup.BroadcastReceiver.

# Tùy chọn 2: Sử dụng mã để đăng ký bộ thu phát sóng

Chúng ta có thể đăng ký với mã Kotlin như sau: var filter = IntentFilter (“com.pycitup.BroadcastReceiver”) var myReceiver = MyReceiver () fun registerReceiver (myReceiver, filter)

Tương tự như phương thức đăng ký bằng quảng cáo trong Manifest. Chúng tôi cũng chỉ đăng ký các thông báo có hành động: com.pycitup.BroadcastReceiver.

Hành động này về cơ bản chỉ là một chuỗi mà bạn muốn đặt bất cứ thứ gì vào. Thông thường mọi người đặt tên hành động trùng tên với gói ứng dụng.

Có một sự khác biệt lớn giữa hai phương pháp ghi âm: nếu bạn ghi bằng mã, khi hoạt động bị dừng, việc nghe chương trình phát sóng cũng bị tạm dừng. Trong khi đăng ký thông qua bản kê khai, anh ấy sẽ nghe mãi mãi.

Do đó, nếu bạn đã đăng ký người nhận qua mã, bạn phải hủy đăng ký khi hoạt động dừng lại. Một cái gì đó giống như trò vui được bảo vệ sau onPause () {unregisterReceiver (mReceiver) super.onPause ()}

Vậy cách tốt nhất để đăng ký đầu thu là gì?

Lời khuyên của tôi là tùy vào mục đích nộp hồ sơ của bạn mà chọn phương thức đăng ký cho phù hợp.

Nếu ứng dụng muốn cập nhật ngay trên màn hình điện thoại (chẳng hạn như màn hình chính, launcher, thanh trạng thái hoặc widget) khi nhận được thông báo từ hệ thống hoặc các ứng dụng khác thì phương pháp ghi qua tệp kê khai là phù hợp.

Mặc dù bạn chỉ nhận được thông báo mà bạn muốn cập nhật khi người dùng đang ở trong ứng dụng, nhưng việc đăng ký bằng mã sẽ có ý nghĩa hơn. Vì bạn sẽ chủ động đăng ký / hủy đăng ký để cải thiện hiệu suất hệ thống.

Ngoài ra, có một số trường hợp ngoại lệ như actionIntent.ACTION_TIME_TICK, nơi bạn không thể đăng ký trong tệp kê khai mà phải đăng ký bằng mã thông báo. Android làm điều này để tiết kiệm pin hệ thống.

    Đừng bỏ lỡ: Tại sao nên học ngôn ngữ lập trình Kotlin?

4. Gửi sự kiện / ý định phát sóng

Chúng ta đã hoàn thành 2/3 công đoạn quan trọng của bộ thu phát sóng Android. Phần cuối cùng là gửi một thông báo (broadcast) .val Ý định = Intent () Ý định.addFlags (Intent.FLAG_INCLUDE_STOPPED_PACKAGES) Ý định.setAction (“com.pycitup.BroadcastReceiver”) Ý định.putExtra (“Foo”, “Thanh”) sendBroadcast (“) Foo”, “Bar”) sendBroadcast (“Foo”, “Bar”) ý định)

Chúng tôi tạo một ý định, sau đó thiết lập hành động cho ý định đó. Đây là com.pycitup.BroadcastReceiver. Đó là quy trình chúng tôi đã sử dụng để ghi điểm ở đầu bài báo. Dữ liệu sẽ được đưa vào ý định thông qua hàm putExtra ().

Cuối cùng, gửi chương trình phát sóng bằng hàm sendBroadcast ()

Giải thích thêm một chút nếu trong đoạn mã trên, bạn nhận thấy một cờ: FLAG_INCLUDE_STOPPED_PACKAGES. Về cơ bản, cờ này cho phép ứng dụng tiếp tục nhận thông báo nếu ứng dụng được cài đặt nhưng không được khởi động hoặc bị vô hiệu hóa bởi một công cụ quản lý hệ thống như trình quản lý tác vụ.

Các loại phát sóng

Nói chung, có hai cách để gửi một chương trình phát sóng:

    Gửi chương trình phát sóng theo cách thông thường: tức là chúng tôi sử dụng hàm Context.sendBradcast () như bạn đã thấy ở trên. Đây là cách phát sóng được gửi không đồng bộ và cả phía người nhận. Máy thu được bật theo thứ tự không xác định, thường xuyên cùng một lúc. Nhược điểm của phương thức truyền này là các máy thu không thể sử dụng kết quả của nhau. Yêu cầu người nhận được kiểm soát bởi quyền ưu tiên thuộc tính android:. Các máy nhận có cùng mức độ ưu tiên sẽ được thực hiện theo thứ tự ngẫu nhiên. Khi mỗi bộ thu thực hiện, nó có thể chuyển kết quả cho bộ thu tiếp theo hoặc hủy bỏ toàn bộ chuỗi phát sóng để không bộ thu nào khác có thể nhận được.

Xem thêm

 

Nghĩa của Chứng từ giao nhận hàng hóa là gì

Đây là một ví dụ về cách gửi một chương trình phát sóng theo thứ tự // MySecondReceiver.kt class MySecondReceiver: BroadcastReceiver () {private val TAG = MySecondReceiver :: class.java !!. getSimpleName () fun onReceive (context: context, target: purpose) {val results = getResultExtras (true) results.putString (“phân cấp”, TAG) Log.d (TAG, “MySecondReceiver”)}} // Lớp MyReceiver.kt MyReceiver: BroadcastReceiver () {private val TAG = MyReceiver :: class.java !!. getSimpleName () fun onReceive (context: context, target: target) {val results = getResultExtras (true) val hierarchy = results.getString (“hierarchy”) results.putString (“hierarchy”, hierarchy + “->” + TAG) Log.d (TAG, “MyReceiver”)}}

Cuối cùng, thông báo đăng ký Manifest NB:Mức độ ưu tiên của người nhận được ghi nhận bằng thẻ bắt đầu bằng # android: priority. Ưu tiên càng cao thì người đầu tiên sẽ được nhận. Theo mặc định, mức độ ưu tiên là 0.

Sau đây là phần điều phối quảng bá trong MainActivity.onCreate (): val filter = IntentFilter (“com.pycitup.BroadcastReceiver”) registerReceiver (object: BroadcastReceiver () {fun onReceive (context: context, target: purpose) {val results = getResultExtras () true) val hierarchy = results.getString (“hierarchy”) results.putString (“hierarchy”, hierarchy + “,” -> “+ TAG) Log.d (TAG,” bộ thu phát sóng lớp không xác định “)}} , bộ lọc) val Ý định = Intent (“com.pycitup.BroadcastReceiver”) sendOrderedBroadcast (ý định, null, đối tượng: BroadcastReceiver () {fun onReceive (Context: Bối cảnh, ý định: Ý định) {val results = getResultExtras (true) val hierarchy = bản ghi results.getString () ‘hệ thống phân cấp’) println (hệ thống phân cấp). d (TAG, ‘người nhận cuối cùng’)}}, trống, hoạt động. RESULT_OK, trống, trống)

Và đây là kết quả khi bạn chạy ứng dụng ﹕ MySecondReceiver ﹕ MyReceiver ﹕ Bộ thu phát sóng lớp ẩn danh ﹕ MySecondReceiver-> MyReceiver-> MainActivity ﹕ Final Receiver

Như tôi đã nói ở trên, bất kỳ đầu thu nào cũng có thể hủy toàn bộ chuỗi phát sóng để ngăn các đầu thu khác nhận được. Chỉ cần gọi abortBroadcast ()

    Dành cho bạn: Tích hợp Google Drive vào Ứng dụng Android của AZ

5. Gửi một BroadcastManager cục bộ trong ứng dụng

Như bạn đã biết, khi bạn gửi một chương trình phát sóng, bất kỳ ứng dụng nào ghi lại sẽ nhận được nó. Đôi khi vì một lý do Bảo mật ứng dụng Điều mà chúng tôi không muốn bất kỳ ứng dụng nào khác nhận được. Thông tin này chỉ được gửi trong ứng dụng.

LocalBroadcast sẽ giúp bạn làm điều đó. “LocalBroadcastManager”, “foo:” + message)}}, IntentFilter (“Sự kiện tùy chỉnh của tôi”))

Đây là cách gửi mục đích phát sóng cục bộ = Intent (“my-custom-event”) Ý định.putExtra (“foo”, “thanh”) LocalBroadcastManager.getInstance (điều này) .sendBroadcast (ý định)

Và đừng quên hủy đăng ký hàm onPause () của bạn Hoạt độngniềm vui được bảo vệ onPause () {LocalBroadcastManager.getInstance (this) .unregisterReceiver (mReceiver) super.onPause ()}

6. Quyền

Có một số chương trình phát sóng yêu cầu sự cho phép. Tất nhiên, người dùng phải đồng ý với các quyền này.

Ví dụ: Intent.ACTION_BOOT_COMPLETED yêu cầu quyền RECEIVE_BOOT_COMPLETED

Bạn tuyên bố quyền trong bản tường trình Như sau <يستخدم إذن android: name = “android.permission.RECEIVE_BOOT_COMPLETED” />

Tất nhiên, đây chỉ là giấy phép, từ Android M trở lên, bạn cần viết thêm mã để yêu cầu người dùng đồng ý với quyền này cho ứng dụng.

Mặc dù hầu hết các chương trình phát sóng đều không xin phép nhưng hãy cẩn thận đừng lo lắng, bạn có thể kiểm tra tại đây

7. Tóm tắt

Và vì vậy chúng tôi đã vượt qua tất cả các vấn đề Nhận chương trình phát sóng trên Android. Mặc dù tương lai phát sóng Không phải là một bài toán khó nhưng có rất nhiều điểm thú vị phải không các bạn.

Bài viết sau chúng ta sẽ cùng nhau tìm hiểu về đa luồng theo luồng, Asynctask trong Android

Đừng quên để lại bình luận nếu bạn có bất kỳ câu hỏi nào

Xem thêm các bài trong chuỗiPhần trước: Dịch vụ trong Android là gì? Các loại dịch vụ Android Tiếp tục: Android AsyncTask là một công cụ đa luồng mạnh mẽ

Tương lai của phát trực tuyến trên android là gì?

Nhận sách giáo dục Flutter với 65 ứng dụng

Flutter là một nền tảng lập trình đa nền tảng (Android và iOS) do Google cung cấp. Nếu bạn muốn học Flutter thì không nên bỏ qua cuốn sách này. Cuốn sách này hiện đang được bán trên Amazon với giá $ 19,99 và bây giờ VNTALKING miễn phí cho bạn.

Tải xuống

Tương lai của phát trực tuyến trên android là gì?

Các video liên quan

Bài viết được chia sẻ bởi caigiday.com