日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

安卓四大组件之二广播

發布時間:2024/1/23 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 安卓四大组件之二广播 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

定義
BroadcastReceiver,“廣播接收者”的意思,顧名思義,它就是用來接收來自系統和應用中的廣播。在Android系統中,廣播體現在方方面面,例如當開機完成后系統會產生一條廣播,接收到這條廣播就能實現開機啟動服務的功能;當網絡狀態改變時系統會產生一條廣播,接收到這條廣播就能及時地做出提示和保存數據等操作;當電池電量改變時,系統會產生一條廣播,接收到這條廣播就能在電量低時告知用戶及時保存進度等等。Android中的廣播機制設計的非常出色,很多事情原本需要開發者親自操作的,現在只需等待廣播告知自己就可以了,大大減少了開發的工作量和開發周期。而作為應用開發者,就需要數練掌握Android系統提供的一個開發利器,那就是BroadcastReceiver。
在我們詳細分析創建BroadcastReceiver的兩種注冊方式前,我們先羅列本次分析的大綱:
(1)對靜態和動態兩種注冊方式進行概念闡述以及演示實現步驟
(2)簡述兩種BroadcastReceiver的類型(為后續注冊方式的對比做準備)
(3)在默認廣播類型下設置優先級和無優先級情況下兩種注冊方式的比較
(4)在有序廣播類型下兩種注冊方式的比較
(5)通過接受打電話的廣播,在程序(Activity)運行時和終止運行時,對兩種注冊方式的比較
(6)總結兩種方式的特點
一、靜態和動態注冊方式
? 構建Intent,使用sendBroadcast方法發出廣播定義一個廣播接收器,該廣播接收器繼承BroadcastReceiver,并且覆蓋onReceive()方法來響應事件注冊該廣播接收器,我們可以在代碼中注冊(動態注冊),也可以AndroidManifest.xml配置文件中注冊(靜態注冊)。
案例解析:
1.主界面設計

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:orientation="vertical"android:layout_height="match_parent"tools:context=".MainActivity"><Buttonandroid:id="@+id/btnSend"android:layout_width="match_parent"android:layout_height="wrap_content"android:insetTop="16dp"android:text="發松" /> </LinearLayout>

如圖:

2.后臺代碼設計

package com.aaa.btdemo02;import androidx.appcompat.app.AppCompatActivity;import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button; public class MainActivity extends AppCompatActivity {//定義對象;村長:一樣權威,光輝的存在,拿著大喇叭,講話;Button btnSend;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main); //取值btnSend=(Button) findViewById(R.id.btnSend);//這對這個按鈕做監聽事件;發送信息,大喇叭...btnSend.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {Intent intent=new Intent();//設置intent的動作;后面字符串是自定義的intent.setAction("android.intent.action.receiverdata");intent.putExtra("msg","羊村各位村民開會了");MainActivity.this.sendBroadcast(intent);}});} }

3.創建自己的廣播接收器類

package com.aaa.btdemo02;import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.text.TextUtils; import android.util.Log; public class MyReceiver extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {//接受廣播if(intent==null)return;//intent:接受從主端傳遞過來的數據,action數據;String action=intent.getAction();//針對上述做判斷;第一個判斷是否為空也可以寫成action.isEmptyif(!TextUtils.isEmpty(action)&&"android.intent.action.receiverdata".equals(action)){String msg=intent.getStringExtra("msg");//不習慣可以使用BundleLog.i("喜洋洋-->",msg);}} }

4.注冊廣播

<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.aaa.btdemo02"><applicationandroid:allowBackup="true"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:roundIcon="@mipmap/ic_launcher_round"android:supportsRtl="true"android:theme="@style/Theme.Btdemo02"><activityandroid:name=".MainActivity"android:exported="true"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity><receiver android:name=".MyReceiver"android:exported="true"><intent-filter><!-- 自定義的action名 --><action android:name="android.intent.action.receiverdata"/></intent-filter></receiver></application></manifest>

5.運行效果

在這里插入圖片描述

總結

以上是生活随笔為你收集整理的安卓四大组件之二广播的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。