最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android入門之動(dòng)態(tài)BroadCast的使用教程

 更新時(shí)間:2022年12月14日 09:06:29   作者:TGITCIC  
系統(tǒng)自己在很多時(shí)候都會(huì)發(fā)送廣播,比如電量低或者充足,剛啟動(dòng)完,插入耳機(jī),你有一條新的微信消息,這種都是使用BroadCast機(jī)制去實(shí)現(xiàn)的。BroadCast分為靜態(tài)和動(dòng)態(tài)BroadCast兩種,本文就來聊聊動(dòng)態(tài)BroadCast的使用,需要的可以參考一下

BroadCast是什么

BroadcastReceiver就是應(yīng)用程序間的全局大喇叭,即通信的一個(gè)手段, 系統(tǒng)自己在很多時(shí)候都會(huì)發(fā)送廣播,比如電量低或者充足,剛啟動(dòng)完,插入耳機(jī),你有一條新的微信消息。。。這種都是使用BroadCast機(jī)制去實(shí)現(xiàn)的。

BroadCast分為靜態(tài)和動(dòng)態(tài)BroadCast兩種。它們的區(qū)別是:

  • 動(dòng)態(tài)BroadCast是運(yùn)行時(shí)發(fā)生的,它只有發(fā)生在APP運(yùn)行后;
  • 那么有一種消息如:開機(jī)監(jiān)聽、全局監(jiān)聽、無activity承載彈窗在開機(jī)時(shí)APP沒有運(yùn)行前告知你天氣要變化了這種消息,這種消息就是用的“靜態(tài)BroadCast“;

我們今天先從動(dòng)態(tài)BroadCast入手。從今天開始我們后面很多教程都涉及到有一樣?xùn)|西即:Android權(quán)限。

對(duì)于Android權(quán)限,這一塊知識(shí)比較零碎。而且在不同的Android版本間還有巨大的差異。主要分為:

  • Android 6以前版本
  • Android 6-10
  • Android 10以后

每個(gè)sdk版本對(duì)權(quán)限的調(diào)用、配置還各不相同,我們就見招折招吧。

動(dòng)態(tài)Broad Cast演示例子

今天我們來做的例子是一個(gè)在應(yīng)用啟動(dòng)后如果網(wǎng)絡(luò)信號(hào)發(fā)生斷/連后及時(shí)廣播相應(yīng)的消息給到應(yīng)用的Activity。如下圖:

  • 在模擬器里用鼠標(biāo)拖著屏幕的頂部黑框下一點(diǎn)然后按住鼠標(biāo)不動(dòng)往下拖動(dòng),就會(huì)出現(xiàn)一些“常用設(shè)置”。
  • 在設(shè)置里里對(duì)著網(wǎng)絡(luò)信號(hào)開關(guān)作開/關(guān)操作
  • 你可以看到下方有浮動(dòng)的Toast顯示“網(wǎng)絡(luò)狀態(tài)發(fā)生改變”

圍繞例子進(jìn)行設(shè)計(jì)

1.我們寫動(dòng)態(tài)BroadCast,需要讓一個(gè)Java類繼承自:android.content.BroadcastReceiver;

2.覆寫public void onReceive(Context context, Intent intent)方法,這個(gè)方法就是收到BroadCast后的處理邏輯所在了;

3.一定要記得把這個(gè)自己寫的receiver注冊(cè)到:AndroidManifest.xml文件中去。當(dāng)然,你可以使用Android Studio的new->other->BroadCast Receiver來生成這個(gè)Receiver,它會(huì)自動(dòng)幫你把這個(gè)Receiver的類注冊(cè)到AndroidManifest.xml文件中去;

4.然后在Activity啟動(dòng)使IntentFilter.addAction("android.net.conn.CONNECTIVITY_CHANGE")添加應(yīng)用對(duì)網(wǎng)絡(luò)狀態(tài)監(jiān)聽情況;

來看全代碼吧。

全代碼

Receiver在AndroidManifest中的注冊(cè)

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools">
 
    <application
        android:allowBackup="true"
        android:dataExtractionRules="@xml/data_extraction_rules"
        android:fullBackupContent="@xml/backup_rules"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.DemoDynamicBroadCast"
        tools:targetApi="31">
        <receiver
            android:name=".SimpleBroadCast"
            android:enabled="true"
            android:exported="true"></receiver>
 
        <activity
            android:name=".MainActivity"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
 
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
 
            <meta-data
                android:name="android.app.lib_name"
                android:value="" />
        </activity>
    </application>
 
</manifest>

Receiver-SimpleBroadCast

package org.mk.android.demo.broadcast;
 
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
import android.widget.Toast;
 
public class SimpleBroadCast extends BroadcastReceiver {
 
    private final static String TAG="DemoDynamicBroadCast";
    @Override
    public void onReceive(Context context, Intent intent) {
        Toast.makeText(context,"網(wǎng)絡(luò)狀態(tài)發(fā)生改變~",Toast.LENGTH_SHORT).show();
        Log.i(TAG,">>>>>>網(wǎng)絡(luò)狀態(tài)發(fā)生改變");
    }
}

這個(gè)Receiver很簡(jiǎn)單,就是在onReceive方法中輸出一個(gè)Toast。

再來看activity端。

MainActivity

package org.mk.android.demo.broadcast;
 
import androidx.appcompat.app.AppCompatActivity;
 
import android.content.IntentFilter;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
 
public class MainActivity extends AppCompatActivity {
    SimpleBroadCast simpleBroadCast;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //核心部分代碼:
        simpleBroadCast = new SimpleBroadCast();
        IntentFilter itFilter = new IntentFilter();
        itFilter.addAction("android.net.conn.CONNECTIVITY_CHANGE");
        registerReceiver(simpleBroadCast, itFilter);
    }
    //別忘了將廣播取消掉哦~
    @Override
    protected void onDestroy() {
        super.onDestroy();
        unregisterReceiver(simpleBroadCast);
    }
}

運(yùn)行后的效果

以下是運(yùn)行后的效果

到此這篇關(guān)于Android入門之動(dòng)態(tài)BroadCast的使用教程的文章就介紹到這了,更多相關(guān)Android動(dòng)態(tài)BroadCast內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Android獲取手機(jī)文件夾及文件列表的方法

    Android獲取手機(jī)文件夾及文件列表的方法

    這篇文章主要為大家詳細(xì)介紹了Android獲取手機(jī)文件夾及文件列表的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-11-11
  • Android PickerView底部選擇框?qū)崿F(xiàn)流程詳解

    Android PickerView底部選擇框?qū)崿F(xiàn)流程詳解

    本次主要介紹Android中底部彈出框的使用,使用兩個(gè)案例來說明,首先是時(shí)間選擇器,然后是自定義底部彈出框的選擇器,以下來一一說明他們的使用方法
    2022-09-09
  • RxJava2配置及使用詳解

    RxJava2配置及使用詳解

    這篇文章主要介紹了RxJava2配置及使用詳解,RxJava2.0是一個(gè)非常棒的流式編程,有興趣的可以了解一下
    2017-06-06
  • Android?AIDL通信DeadObjectException解決方法示例

    Android?AIDL通信DeadObjectException解決方法示例

    這篇文章主要為大家介紹了Android?AIDL通信DeadObjectException解決的方法示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03
  • Android ViewPager實(shí)現(xiàn)無限循環(huán)輪播廣告位Banner效果

    Android ViewPager實(shí)現(xiàn)無限循環(huán)輪播廣告位Banner效果

    這篇文章主要為大家詳細(xì)介紹了Android ViewPager實(shí)現(xiàn)無限循環(huán)輪播廣告位Banner效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • Android滾動(dòng)菜單ListView實(shí)例詳解

    Android滾動(dòng)菜單ListView實(shí)例詳解

    這篇文章主要為大家詳細(xì)介紹了Android滾動(dòng)菜單ListView實(shí)例,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • flutter監(jiān)聽app進(jìn)入前后臺(tái)狀態(tài)的實(shí)現(xiàn)

    flutter監(jiān)聽app進(jìn)入前后臺(tái)狀態(tài)的實(shí)現(xiàn)

    在開發(fā)app的過程中,我們經(jīng)常需要知道app處于前后臺(tái)的狀態(tài),本文主要介紹了flutter監(jiān)聽app進(jìn)入前后臺(tái)狀態(tài)的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-04-04
  • 使用TransitionDrawable實(shí)現(xiàn)多張圖片淡入淡出效果

    使用TransitionDrawable實(shí)現(xiàn)多張圖片淡入淡出效果

    這篇文章主要為大家詳細(xì)介紹了使用TransitionDrawable實(shí)現(xiàn)多張圖片淡入淡出效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-08-08
  • Android遠(yuǎn)程獲取圖片并本地緩存

    Android遠(yuǎn)程獲取圖片并本地緩存

    這篇文章主要介紹了Android遠(yuǎn)程獲取圖片并本地緩存方法,對(duì)于遠(yuǎn)程圖片等相對(duì)比較大的資源采用異步線程中去獲取本地做緩存,感興趣的小伙伴們可以參考一下
    2016-02-02
  • 淺談Android Activity與Service的交互方式

    淺談Android Activity與Service的交互方式

    下面小編就為大家?guī)硪黄獪\談Android Activity與Service的交互方式。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-09-09

最新評(píng)論

东乡| 甘谷县| 镇坪县| 玛曲县| 法库县| 东源县| 鹤岗市| 仁怀市| 邯郸市| 肥西县| 理塘县| 军事| 泰和县| 特克斯县| 彭泽县| 洛川县| 棋牌| 桐乡市| 东阿县| 富源县| 哈尔滨市| 内乡县| 汝州市| 琼海市| 昭平县| 中方县| 浦城县| 汾阳市| 航空| 辉南县| 吉木萨尔县| 龙南县| 榆社县| 定西市| 万源市| 潢川县| 辽阳县| 青海省| 辉南县| 嘉荫县| 汉中市|