android登录注册_android studio注册页面
大家好,又见面了,我是你们的朋友全栈君。
image.png
BroadcastReceiver
广播作为四大组件之一,使用方式也是多种多样的,既可以自己在manifest中注册,也可以在java代码中动态注册,既可以接收由系统发出的广播,也可以接受自己定义并发送的广播。
广播可以实现进程内以及跨进程之间的通信。
roadcastReceiver分类
- 从注册方式上区分:动态注册以及静态注册(显示广播和隐式广播)
- 从发送方式上区分:无序广播和有序广播
- 从处理类型上区分:前台广播和后台广播
- 从运行方式上区分:普通广播和Sticky广播(已弃用)
- 从发送者区分:系统广播和自定义广播
BroadcastReceiver作为Android四大组件之一,不像Activity,没有可显示的界面。
BroadcastReceiver包括两个概念,广播发送者和广播接收者(Receiver),这里的广播实际就是指Intent,程序可以自己发送广播自己接收,也可以接受系统或其他应用的广播或是发送广播给其他应用程序。
发送者可以通过类似Context.sendBroadcast
接口发送广播.
接收者通过Context.registerReceiver()
动态注册或在AndroidManifest.xml文件中通过<receiver>标签静态注册.
注册完成后,当发送者发送某个广播时系统会将发送的广播(Intent)与系统中所有注册的符合条件的接收者(Receiver) 的IntentFilter进行匹配,若匹配成功则执行相应接收者的onReceive函数,匹配规则见Intent和IntentFilter的匹配规则。
IntentFilter(Intent过滤器)
一个 Activity 也可以有多个 IntentFilter,相当于多了几个过滤器,被筛选到的可能就更大了。
<activity
android:name=".activity.launchmode.SingleTaskActivity"
android:alwaysRetainTaskState="true"
android:label="singleTask"
android:launchMode="singleTask"
android:taskAffinity="top.shixinzhang.task2">
<intent-filter>
<action android:name="top.shixinzhang.action.test"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="top.shixinzhang.category.test"/>
<data android:mimeType="text/plain"/>
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
<data
android:host="myapp.mycompany.com"
android:scheme="myapp"/>
</intent-filter>
</activity>
IntentFilter 的匹配规则
action 的匹配规则
action 可以理解为一个组件具备功能、可以进行什么操作。系统为我们提供了很多内置的 action,当然也可以自定义。
<intent-filter>
<action android:name="android.intent.action.EDIT" />
<action android:name="android.intent.action.VIEW" />
...
</intent-filter>
Intent 中的 action 至少有一个与过滤器的匹配,才能调用这个过滤器所在的组件,否则无法命中。
action | 名称作用 | 备注 |
---|---|---|
android.intent.action.MAIN | 标识 Activity 为一个程序的开始 | – |
android.intent.action.CALL | 呼叫指定的电话号码 | – |
android.intent.action.DIAL | 用拨号面板 | – |
andriod.intent.action.ALL_APPS | 列出所有的应用 | – |
android.intent.action.ANSWER | 处理呼入的电话 | – |
android.intent.action.VIEW | 显示用户的数据 | 通用,可以是电话、浏览器等 |
android.intent.action.SENDTO | 发送消息 | 可以是短信、彩信、邮件等 |
android.intent.action.EDIT | 对给定数据以编辑的形式访问 | – |
android.intent.action.PICK | 从列表中选择信息 | 一般用于选择联系人或者图片等 |
android.intent.action.CHOOSER | 显示一个Activity选择器 | 比如常见的选择分享到哪里 |
category匹配规则
category 即分类,和 action 一样,一个过滤器可以包含多个分类:
<intent-filter>
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
...
</intent-filter>
和 action 匹配规则(有一个匹配即可)不同的是,category 匹配时,要求你的 Intent 中的 category 必须和过滤器中声明的完全匹配。
例,startActivity(intent) 中的 intent 的分类不能是 android.intent.category.DEFAULT 和 android.intent.category.BROWSABLE 以外的。
image.png
data匹配规则
data 表示该组件可以支持的数据格式与类型。
同样,一个过滤器也可以有多个 data:
<intent-filter>
<data android:mimeType="video/mpeg" android:scheme="http" ... />
<data android:mimeType="audio/mpeg" android:scheme="http" ... />
...
</intent-filter>
一个 data 由mimeType和scheme组成。
mimeType指的是支持的数据类型与格式,常见的有:
- text/plain
- image/jpeg
- video/*
- audio/*
/
号前面的是数据类型,后面是具体格式。
scheme 就是常见的 URI 格式:
<scheme>://<host>:<port>/<path>
参数 | 含义 | 说明 |
---|---|---|
scheme | 协议类型 | 最重要,协议类型决定了如何访问数据,比如是本地还是网络 |
host | 主机 | 第二重要,主机地址决定了具体 ip |
port | 端口 | 第三重要,一个主机可能有多个网卡端口,有了端口后才能访问到具体 |
path | 具体路径 | 最后一级,表示要访问的文件夹路径 |
例如:
http://www.baidu.com:80/search/info
file://emulator/0/sdcard/shixinzhang
scheme 和 mimeType 组成一个 data。而 data 的匹配规则就是:intent 中的 data 至少可以匹配过滤器中的一个。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/194807.html原文链接:https://javaforall.cn
相关文章
- android studio不能输入中文_Android模拟器
- Android逆向第一步之开启root权限
- android onresume方法,非静态方法’onResume’Android Studio
- strictmode android,Android中的StrictMode
- android studio usb连接手机_android studio怎么用真机调试
- Android preference_android studio preview
- 安装Android Studio并创建一个Android Demo
- android进程间通信的方式_Android进程注入
- Android 定位之百度地图定位 问题总结
- 【Android FFMPEG 开发】Android Studio 工程配置 FFMPEG ( 动态库打包 | 头文件与函数库拷贝 | CMake 脚本配置 )
- 【Android 性能优化】布局渲染优化 ( CPU 与 GPU 架构分析 | 安卓布局显示流程 | 视觉与帧率分析 | 渲染超时卡顿分析 | 渲染过程与优化 )
- 【错误记录】Android Studio 中 build.gradle 配置 buildFeatures prefab 错误处理 ( AS 4.1 以上开发环境 | Gradle及插件版本 )
- 【错误记录】Android Studio 编译报错 ( A problem occurred starting process ‘command ‘ninja.exe‘ ‘ )
- 【错误记录】Android 应用运行报错 ( You need to use a Theme.AppCompat theme (or descendant) with this activity. )
- 【错误记录】Android Studio 编译报错 ( AppCompat does not support the current theme features )
- 【Android 逆向】修改 Android 系统文件 ( default.prop 配置信息 | 修改 default.prop 配置信息文件 )
- 【ijkplayer】编译 Android 版本的 ijkplayer ③ ( 执行 compile-ffmpeg.sh clean 命令 | 下载并配置 android-ndk-r10e )
- Android Studio SDK 下工具的路径和作用
- Android开发学习总结(二)——使用Android Studio搭建Android集成开发环境详解手机开发
- 关于Android studio报junit错误的问题详解手机开发
- Android Studio 导入项目 出现安装Error:Cause: failed to find target with hash string ‘android-23’ 等错误详解手机开发
- Android 命名规范和编码规范详解编程语言
- Android的Touch事件处理机制介绍
- Android系统自带样式(android:theme)
- Android从服务器获取图片的实例方法
- android真机调试时无法显示logcat信息的解决方法介绍
- Android中新引进的GoogleAuthenticator验证系统工作原理浅析
- Python实现删除Android工程中的冗余字符串