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内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
您可能感兴趣的文章:
- .NET Core系列之MemoryCache 初识
- 007手机一键Root(安机网一键Root) v3.0 官方最新版 一键ROOT您的Android手机
- 12306密码被盗了怎么办?12306密码外泄解决方法
- 12个字的qq网名
- 150M迷你型无线路由器怎么设置?
- 192.168.1.1打不开怎么办?路由器192.168.1.1打不开的原因以及解决办法
- 2011年电子报合订本 电子报 编辑部 中文 PDF版 [84M]
- 2015年1月15日小米新旗舰发布会现场图文直播
- 2016.3.1vivo Xplay5新品发布会现场视频直播 优酷直播
- 2016华为P9发布会视频直播地址 4月15日华为P9国行发布会直播