Ujian induk Penerima Siaran


Pengenalan kepada bahagian ini

Dalam bahagian ini kita akan mempelajari yang ketiga daripada empat komponen utama Android: BroadcastReceiver (penerima siaran), hehe, saya telah memikirkannya sebentar tadi Cara menulis ayat pembuka, jadi saya membelek dua buku asas Android yang saya miliki dan mendapati kedua-duanya tidak mempunyai pengenalan kepada BroadcastReceiver. Saya tidak tahu sama ada ia secara kebetulan atau penulis merasakan bahawa perkara ini tidak digunakan banyak dan tidak perlu dibincangkan! Walau bagaimanapun, mereka tidak bercakap mengenainya, tetapi Xiaozhu boleh bercakap mengenainya, dan dia perlu membincangkannya secara terperinci! Baiklah, mari mulakan bahagian ini~ PS: Dengan cara ini, di laman web rasmi Android, saya mengklik pada Panduan API -> Komponen Apl dan tidak menemui sebarang kesan Penerima Siaran. Nah, cari sahaja untuk Penerima Siaran Alamat dokumen yang sepadan ialah: Penerima Siaran


1.

Jawapan: Siaran ialah terjemahan literal bagi siaran Mari berikan contoh yang jelas untuk membantu saya memahami Penerima Siaran Pada masa itu, setiap kelas akan mempunyai pembesar suara besar yang tergantung di dinding untuk menyiarkan beberapa pengumuman, seperti apabila sekolah mula memindahkan buku, menyiarkan: "Dalam setiap kelas, cari beberapa rakan sekelas untuk mengambil buku dari Pejabat Hal Ehwal Akademik Selepas siaran ini dihantar, semua pelajar akan menerima pemberitahuan siaran ini pada masa yang sama. Diterima, tetapi tidak setiap pelajar akan memindahkan buku Secara umumnya, mereka yang memindahkan buku adalah "lelaki kuat" dalam kelas ini Selepas siaran, dia akan bergerak untuk memindahkan buku-buku itu kembali tetapi!
——Baiklah, di atas adalah contoh penyampaian siaran yang sangat jelas:
Pembesar suara besar--> Hantar siaran--> Semua pelajar boleh menerima siaran--> kepada konsep kami, sebenarnya, BroadcastReceiver ialah pembesar suara global antara aplikasi, iaitu, alat komunikasi. Sistem itu sendiri akan menghantar siaran pada banyak masa, seperti apabila bateri lemah atau mencukupi, selepas sahaja dimulakan, memasang fon kepala, menukar kaedah input, dsb. Apabila masa ini berlaku, sistem akan menghantar siaran Ini dipanggil siaran sistem Setiap APP akan menerimanya Lakukan beberapa operasi semasa siaran ini, seperti: selepas sistem dihidupkan, jalankan perkhidmatan secara rahsia di latar belakang ~ Haha, pada masa ini anda hanya perlu Daftarkan Penerima Siaran untuk memantau permulaan Apabila menerima siaran permulaan, lakukan beberapa perkara licik~ Sudah tentu, kami juga boleh menghantar siaran sendiri Sebagai contoh, selepas menerima maklumat push daripada pelayan, pengguna log masuk ke tempat lain, dan kemudian pengguna harus dipaksa untuk log keluar dan kembali ke. Antara muka log masuk, dan gesaan untuk log masuk di tempat lain ~ Sudah tentu, saya akan menulis contoh mudah kemudian untuk membantu semua orang memahami faedah yang dibawa oleh penyiaran kepada kita ~


2. Dua jenis siaran :

1.png


3. Terima siaran sistem

1) Dua cara untuk mendaftar siaran

Seperti yang dinyatakan sebelum ini, sistem akan menghantar siaran sistem yang sepadan pada masa-masa tertentu, mari mari APP kami menerima siaran sistem, Sebelum menerima, kami perlu mendaftarkan penerima siaran untuk APP kami! Kaedah pendaftaran dibahagikan kepada dua jenis berikut: dinamik dan statik!

2.png

3.png

Di bawah ini kami menunjukkan penggunaan dan perbezaan kedua-duanya melalui kod:

2 ) Pendaftaran dinamik contoh (memantau perubahan status rangkaian)

Contoh kod:

Rendering:

4.gif

Baiklah, pada mulanya tiada sambungan Internet, iaitu wifi tidak dihidupkan Selepas beberapa ketika, gesaan Toast muncul Ia juga mudah untuk dilaksanakan!

Pelaksanaan kod:

Sesuaikan Penerima Siaran dan lengkapkan transaksi untuk disiarkan dalam kaedah onReceive(), seperti maklumat Toast di sini: MyBRReceiver.java

kelas awam MyBRReceiver memanjangkan BroadcastReceiver{
@Override
public void onReceive(Konteks Konteks, Niat niat) {
Toast.makeText(konteks,"Status rangkaian berlaku Tukar~",Toast.LENGTH_SHORT).show();
}
}

MainActivity.java Daftar siaran secara dinamik:

kelas awam MainActivity melanjutkan AppCompatActivity {

MyBRReceiver myReceiver;

> protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//Kod teras:
myReceiver = MyBRReceiver() baharu ;
IntentFilter itFilter = new IntentFilter();
itFilter.addAction("android.net.conn.CONNECTIVITY_CHANGE");
registerReceiver(myReceiver, itFilter);
}

// Jangan lupa batalkan siaran~
@Override
protected void onDestroy() {
super.onDestroy();
unregisterReceiver(myReceiver);
}
}
Pendaftaran dinamik adalah mudah~ tetapi satu kelemahan pendaftaran dinamik ialah ia memerlukan program dimulakan sebelum kita boleh menerima siaran Jika kita memerlukan program Jika ia tidak dimulakan, tetapi anda masih boleh menerima siaran, maka anda perlu mendaftar siaran statik!


3) Contoh pendaftaran statik (menerima siaran but)

Contoh kod:

Tiada gambar rajah di sini~, Mari lihat secara langsung pelaksanaan kod~

Pelaksanaan kod:

1 Sesuaikan Penerima Siaran dan tulis semula onReceive untuk menyelesaikan pemprosesan transaksi

BootCompleteReceiver kelas awam memanjangkan BroadcastReceiver {
Rentetan akhir peribadi ACTION_BOOT = "android.intent.action.BOOT_COMPLETED";
@Override
public void onReceive(Context intent ) {
if (ACTION_BOOT.equals(intent.getAction()))
Toast.makeText(context, "Boot completed~", Toast.LENGTH_LONG).show();
}
}

2. Daftarkan Penerima Siaran dalam AndroidManifest.xml dan tambahkan penapis niat untuk siaran but

Sebenarnya, jangan lupa tambahkan android. kebenaran .RECEIVE_BOOT_COMPLETED kebenaran!

<receiver android:name=".BootCompleteReceiver">
<intent-filter>
<action android:name = "android.intent.cation .BOOT_COMPLETED">
</intent-filter>
</receiver>

<!-- Kebenaran -->
<uses-permission android:name ="android.permission.RECEIVE_BOOT_COMPLETED"/>

Baiklah, kemudian apabila anda memulakan semula telefon anda, anda akan mendapati bahawa selepas beberapa ketika, roti bakar penyiapan permulaan akan muncul~ Selain itu, Android versi 4.3 dan ke atas membenarkan atur cara dipasang pada kad SD Jika program anda dipasang pada SD , anda tidak akan menerima siaran but Sebab dan penyelesaian khusus akan diterangkan secara terperinci dalam bahagian seterusnya!


4) Langkah berjaga-jaga untuk menggunakan siaran:

Hei, siaran mudah digunakan dan ringkas, tetapi anda harus memberi perhatian kepada penggunaan siaran:

Jangan Tambah terlalu banyak logik atau lakukan sebarang operasi yang memakan masa dalam penyiaran, kerana benang tidak dibenarkan dibuka dalam penyiaran. Apabila kaedah onReceiver() berjalan untuk masa yang lama (lebih daripada 10 saat) dan belum tamat, program akan melaporkan ralat (ANR). Penyiaran lebih kerap memainkan peranan untuk membuka komponen lain, seperti memulakan Perkhidmatan, gesaan Pemberitahuan, Aktiviti dan sebagainya!


4. Menghantar siaran

Nah, di atas kita semua menerima siaran daripada sistem. Kita tidak boleh begitu pasif sepanjang masa, kita kena proaktif Betul! Tambahan pula, esok adalah Hari Valentine Cina, programmer, ambil kesempatan dan cuba keluar dari single, haha! Okay, kembali kepada penyiaran, kami akan mengambil inisiatif untuk menyiarkannya sendiri! Mari kita lihat bagaimana untuk mencapainya!

Cara menghantar: Sebelum menghantar siaran, anda mesti terlebih dahulu menentukan penerima, tentukan sasaran dahulu, dan kemudian mengaku! ~(●'◡'●)~

5.png

Contoh Kod: (Siaran Standard)

MyBroadcastReceiver.java

MyBroadcastReceiver kelas awam melanjutkan BroadcastReceiver {
Rentetan akhir peribadi ACTION_BOOT = "com.example.broadcasttest.MY_BROADCAST";
@Override
public void onReceive Niat niat) {
if(ACTION_BOOT.equals(intent.getAction()))
Toast.makeText(context, "I got the confession~",Toast.LENGTH_SHORT).show();
}
}

Kemudian daftarkannya dalam AndroidManifest.xml dan tulis Intent-filter:

<receiver android:name=" . MyBroadcastReceiver">
  <intent-filter>
  <action android:name="com.example.broadcasttest.MY_BROADCAST"/>
  </intent-filter&🎜; /penerima>

Baiklah, seterusnya kita jalankan projek program di atas, kemudian tutupnya, dan kemudian kita buat projek baharu, Lengkapkan penghantaran siaran dalam projek ini ~ Buat Demo2 baharu, reka letak adalah butang mudah, dan kemudian lengkapkan penghantaran siaran dalam MainActivity:

MainActivity.java:

MainActivity kelas awam memanjangkan AppCompatActivity {
@Override
void dilindungi onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout_);<.activity_ 🎜> Butang btn_send = (Button) findViewById(R.id.btn_send);
btn_send.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick({> public void onClick() sendBroadcast(Niat baharu( "com.example.broadcasttest.MY_BROADCAST"));
                                                                                                                                   🎜>




Ringkasan ini bahagian:

Baiklah, penggunaan mudah BroadcastReceiver adalah semudah itu, Walau bagaimanapun, apa yang kami gunakan di sini adalah siaran global, iaitu, lain-lain. Aplikasi ini juga boleh menerima siaran kami, yang mungkin menyebabkan beberapa isu keselamatan, tetapi tidak mengapa kami akan mengajar anda cara menggunakannya dalam bahagian seterusnya. Siaran tempatan, dan cara memasang aplikasi pada kad SD selepas Android 4.3, cara memantau permulaan~Baiklah, itu sahaja untuk bahagian ini, terima kasih~