3

Android入门第44天-Android里使用动态BroadCast

 1 year ago
source link: https://blog.csdn.net/lifetragedy/article/details/128304625
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

BroadCast是什么

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

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

  • 动态BroadCast是运行时发生的,它只有发生在APP运行后;
  • 那么有一种消息如:开机监听、全局监听、无activity承载弹窗在开机时APP没有运行前告知你天气要变化了这种消息,这种消息就是用的“静态BroadCast“;

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

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

  1. Android 6以前版本
  2. Android 6-10
  3. Android 10以后

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

动态Broad Cast演示例子

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

  • 在模拟器里用鼠标拖着屏幕的顶部黑框下一点然后按住鼠标不动往下拖动,就会出现一些“常用设置”。
  • 在设置里里对着网络信号开关作开/关操作
  • 你可以看到下方有浮动的Toast显示“网络状态发生改变”
9d97c8bfc7d8449d8b31975351f6d13a.png

 围绕例子进行设计

  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中的注册



newCodeMoreWhite.png

Receiver-SimpleBroadCast



newCodeMoreWhite.png

这个Receiver很简单,就是在onReceive方法中输出一个Toast

再来看activity端。

MainActivity



newCodeMoreWhite.png

运行后的效果

以下是运行后的效果

effd3809a0f74f2c8c9fb9a2b245f32a.png

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK