安卓广播机制broadcast

简介: 有静态注册和动态注册两种方法静态注册指在AdroidManifest.xml文件中注册动态注册当然是指代码实现实现注册

一、接收系统广播

有静态注册和动态注册两种方法

静态注册指在AdroidManifest.xml文件中注册

动态注册当然是指代码实现实现注册

由系统发出一条广播,然后我们指定一个action来接收广播并且做出相应的动作

这里有一个比较颠覆认知的东西:

我们的软件居然可以在未启动时对系统的广播做出响应,有点难以想象

BroadcastReceiver不允许开线程,所以不能在里面放一些耗时的操作

二、发送自定义广播

广播有两种:标准广播和有序广播

标准广播是异步的同时接收

有序广播是同步的有序的接收,并且前面的广播可以截断后面的

自定义的广播默认是隐式广播无法被静态注册的BroadcastReceiver接收到

需要设置包名用setPackage设置一下包名使得广播变成显式广播

设置有序广播的操作也比较简单调用sendOrderedBroadcast即可

AdroidManifest里面有个标签android:priority = "100"

可以给广播设置优先级,优先级高的可以先接收到广播

三、广播的最佳实践:实现强制下线

这里面利用了activity管理的一部分内容,总体实现难度不是很大,广播响应在baseActivity里面执行使得只需要继承此类即可实现无论在哪个界面都可以实现强制下线功能

四、kotlin的高阶函数

1.高阶函数简单介绍

这部分对于初学kotlin的我来讲,真的有亿点点难

高阶函数的定义一个函数是接收另一个函数为参数则称此函数为高阶函数,涉及一个新的类型:函数类型

无返回值用Unit (kotlin),java里面是用void,举个栗子

fun exmple(func:(int ,String)-> Unit ){
    val result = func(int,String)
    return result
}
//->后面为返回值,前面括号里面为参数类型,即只要满足此形式的函数都可以做为参数传入
//这里高阶函数的作用相当于调用了一个函数

也可以利用lambda表达式的形式进行调用高阶函数

exmple{n1,s1 ->
       n1.toSting + s1
}
//最后一行做为返回值

2.内联函数

由于高阶函数背后的实现原理是利用创建匿名类实例实现的,所以为了解决过高的内存开销这个痛点,

引入了内联函数的概念,利用内联函数解决,举个栗子

inline fun exmple(func:(int ,String)-> Unit ){
    val result = func(int,String)
    return result
}
//这样就可以了,是不是非常简单

3.noinline和crossinline

昨天看这个看的头疼,可能是从未接触过,有点不理解

inline关键字一声明代表里面所有的函数类型关键字都会被声明成内联函数

而noinline可以让部分函数类型不内联,举个栗子

inline fun inlineTest(fun1:()->Unit,noinline fun2:()->Unit){
    
}
//只需在不内联的函数前面加上noinline关键字即可

那为什么不内联?这目前理解的不是非常深,因为没遇见过

//非内联函数只能进行局部返回
//lambda表达式中是不允许直接使用return关键字返回的,这里代表局部返回
return@fun1

//内联函数可以用return 关键字返回
//代表直接返回main函数
return 

crossinline就更加头疼了

出现的原因:在内联高阶函数中创建了另外的lambda表达式或者匿名类的实现

这里是lambda表达式或者匿名类中调用函数类型参数不允许使用return关键字而

高阶函数声明为inline可以允许他们之间产生了矛盾,不过一个好的想法,里面的

lambda表达式或者匿名类不进行return 不就好了(也可以进行局部返回),故产生

了crossinline进行一种约定,举个栗子

inline fun runRunnable(crossinline fun1:()->Unit){
    val runable = Runnable{
        fun1()
    }
    runnable.run()
}

五、git初识

几个新学的的git命令

配置身份

//配置名字和邮箱,git就知道是提交者的身份
git config --global user.name "hhh"
git config --global user.email "hhh@email.com"

//查看配置是否成功
//去掉名字和邮箱即可
git config --global user.name 
git config --global user.email 

创建本地仓库

git init

//进入项目的目录下输入以下命令即可查看所有文件
ls -al
//.git就是记录所有的git操作的文件

提交本地代码

add和commit命令
add用于添加想要提交的代码
commit用于提交
//举个栗子
//添加某个文件
git add build.gradle
//添加某个目录
git add app
//添加整个项目的所有文件
git add .

//提交操作
git commit -m "First commit"
//-m 后面添加描述

这一章整体来讲还是比较充实的,除了高阶函数有点难

目录
相关文章
|
9月前
|
前端开发 编译器 Android开发
构建高效Android应用:探究Kotlin协程的异步处理机制
【4月更文挑战第2天】在现代移动应用开发中,提供流畅且响应迅速的用户体验是至关重要的。随着Android平台的发展,Kotlin语言凭借其简洁性和功能性编程的特点成为了主流选择之一。特别地,Kotlin协程作为一种新型的轻量级线程管理机制,为开发者提供了强大的异步处理能力,从而显著提升了应用程序的性能和响应速度。本文将深入探讨Kotlin协程在Android中的应用,分析其原理、实现以及如何通过协程优化应用性能。
|
9月前
|
存储 Java Android开发
Android系统升级的机制概要
Android系统升级的机制概要
178 0
|
3月前
|
存储 安全 Android开发
探索Android与iOS的隐私保护机制
在数字化时代,移动设备已成为我们生活的一部分,而隐私安全是用户最为关注的问题之一。本文将深入探讨Android和iOS两大主流操作系统在隐私保护方面的策略和实现方式,分析它们各自的优势和不足,以及如何更好地保护用户的隐私。
|
4月前
|
消息中间件 存储 Java
Android消息处理机制(Handler+Looper+Message+MessageQueue)
Android消息处理机制(Handler+Looper+Message+MessageQueue)
63 2
|
3月前
|
Linux Android开发 iOS开发
深入探索Android与iOS的多任务处理机制
在移动操作系统领域,Android和iOS各有千秋,尤其在多任务处理上展现出不同的设计理念和技术实现。本文将深入剖析两大平台在后台管理、资源分配及用户体验方面的策略差异,揭示它们如何平衡性能与电池寿命,为用户带来流畅而高效的操作体验。通过对比分析,我们不仅能够更好地理解各自系统的工作机制,还能为开发者优化应用提供参考。
|
3月前
|
算法 Linux 调度
深入探索安卓系统的多任务处理机制
【10月更文挑战第21天】 本文旨在为读者提供一个关于Android系统多任务处理机制的全面解析。我们将从Android操作系统的核心架构出发,探讨其如何管理多个应用程序的同时运行,包括进程调度、内存管理和电量优化等方面。通过深入分析,本文揭示了Android在处理多任务时所面临的挑战以及它如何通过创新的解决方案来提高用户体验和设备性能。
82 1
|
4月前
|
消息中间件 存储 Java
Android面试高频知识点(2) 详解Android消息处理机制(Handler)
Android面试高频知识点(2) 详解Android消息处理机制(Handler)
|
4月前
|
消息中间件 存储 Java
Android面试高频知识点(2) 详解Android消息处理机制(Handler)
Android面试高频知识点(2) 详解Android消息处理机制(Handler)
76 1
|
4月前
|
存储 安全 数据安全/隐私保护
探索安卓与iOS的隐私保护机制####
【10月更文挑战第15天】 本文深入剖析了安卓和iOS两大操作系统在隐私保护方面的策略与技术实现,旨在揭示两者如何通过不同的技术手段来保障用户数据的安全与隐私。文章将逐一探讨各自的隐私控制功能、加密措施以及用户权限管理,为读者提供一个全面而深入的理解。 ####
146 1
|
4月前
|
消息中间件 存储 Java
Android消息处理机制(Handler+Looper+Message+MessageQueue)
Android消息处理机制(Handler+Looper+Message+MessageQueue)
110 2

热门文章

最新文章

  • 1
    如何修复 Android 和 Windows 不支持视频编解码器的问题?
  • 2
    【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
  • 3
    当flutter react native 等混开框架-并且用vscode-idea等编译器无法打包apk,打包安卓不成功怎么办-直接用android studio如何打包安卓apk -重要-优雅草卓伊凡
  • 4
    【04】flutter补打包流程的签名过程-APP安卓调试配置-结构化项目目录-完善注册相关页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程
  • 5
    APP-国内主流安卓商店-应用市场-鸿蒙商店上架之必备前提·全国公安安全信息评估报告如何申请-需要安全评估报告的资料是哪些-优雅草卓伊凡全程操作
  • 6
    【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
  • 7
    Android经典面试题之Kotlin中Lambda表达式和匿名函数的区别
  • 8
    【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
  • 9
    【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
  • 10
    Android 13 SystemUI 启动流程
  • 1
    【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
    23
  • 2
    【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
    21
  • 3
    APP-国内主流安卓商店-应用市场-鸿蒙商店上架之必备前提·全国公安安全信息评估报告如何申请-需要安全评估报告的资料是哪些-优雅草卓伊凡全程操作
    52
  • 4
    【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
    35
  • 5
    当flutter react native 等混开框架-并且用vscode-idea等编译器无法打包apk,打包安卓不成功怎么办-直接用android studio如何打包安卓apk -重要-优雅草卓伊凡
    70
  • 6
    【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
    111
  • 7
    Android经典面试题之Kotlin中Lambda表达式和匿名函数的区别
    29
  • 8
    如何修复 Android 和 Windows 不支持视频编解码器的问题?
    262
  • 9
    【04】flutter补打包流程的签名过程-APP安卓调试配置-结构化项目目录-完善注册相关页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程
    75
  • 10
    【02】写一个注册页面以及配置打包选项打包安卓apk测试—开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
    36