Android入门之动态BroadCast的使用教程

  目录

  BroadCast是什么

  BroadcastReceiver就是应用程序间的全局大喇叭,即通信的一个手段, 系统自己在很多时候都会发送广播,比如电量低或者充足,刚启动完,插入耳机,你有一条新的微信消息。。。这种都是使用BroadCast机制去实现的。

  BroadCast分为静态和动态BroadCast两种。它们的区别是:

  我们今天先从动态BroadCast入手。从今天开始我们后面很多教程都涉及到有一样东西即:Android权限。

  对于Android权限,这一块知识比较零碎。而且在不同的Android版本间还有巨大的差异。主要分为:

  每个sdk版本对权限的调用、配置还各不相同,我们就见招折招吧。

  动态Broad Cast演示例子

  今天我们来做的例子是一个在应用启动后如果网络信号发生断/连后及时广播相应的消息给到应用的Activity。如下图:

  围绕例子进行设计

  1.我们写动态BroadCast,需要让一个Java类继承自:android.content.BroadcastReceiver;

  2.覆写public void onReceive(Context context, Intent intent)方法,这个方法就是收到BroadCast后的处理逻辑所在了;

  3.一定要记得把这个自己写的receiver注册到:AndroidManifest.xml文件中去。当然,你可以使用Android Studio的new->other->BroadCast Receiver来生成这个Receiver,它会自动帮你把这个Receiver的类注册到AndroidManifest.xml文件中去;

  4.然后在Activity启动使IntentFilter.addAction("android.net.conn.CONNECTIVITY_CHANGE")添加应用对网络状态监听情况;

  来看全代码吧。

  全代码

  Receiver在AndroidManifest中的注册

  <?xml version="1.0" encoding="utf-8"?>

  

  xmlns:tools="http://schemas.android.com/tools">

  

  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">

  

  android:name=".SimpleBroadCast"

  android:enabled="true"

  android:exported="true">

  

  android:name=".MainActivity"

  android:exported="true">

  

  

  

  

  

  android:name="android.app.lib_name"

  android:value="" />

  

  

  

  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,"网络状态发生改变~",Toast.LENGTH_SHORT).show();

  Log.i(TAG,">>>>>>网络状态发生改变");

  }

  }

  这个Receiver很简单,就是在onReceive方法中输出一个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);

  }

  }

  运行后的效果

  以下是运行后的效果

  到此这篇关于Android入门之动态BroadCast的使用教程的文章就介绍到这了,更多相关Android动态BroadCast内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

  您可能感兴趣的文章: