当前位置: 首页 > news >正文

个人做网站名称可以随意更改吗企业网站建设工作流程

个人做网站名称可以随意更改吗,企业网站建设工作流程,网站备案取消前置审批,低面效果在哪个网站做Android13 不能静态注册的几个广播 文章目录 Android13 不能静态注册的几个广播一、不能静态注册的广播:二、静态注册无法生效的分析1、Intent.java2、其他地方声明了不能静态注册的广播3、为啥静态注册的广播无效#xff1f;4、其他静态注册无法生效的广播5、其他Android fra…Android13 不能静态注册的几个广播 文章目录 Android13 不能静态注册的几个广播一、不能静态注册的广播:二、静态注册无法生效的分析1、Intent.java2、其他地方声明了不能静态注册的广播3、为啥静态注册的广播无效4、其他静态注册无法生效的广播5、其他Android framework 所有广播的定义静态广播注册无效解决详解Android广播Broadcast的启动流程AMS 四大组件之 Broadcast流程分析 本文介绍一些广播相关的知识主要是静态广播注册无效的介绍。 其实从Android 8.0 就开始有这个问题的只是本文的源码是基于Android13 分析的。 一、不能静态注册的广播: 其实并不是不能静态注册只是静态注册会无效而已。 android.intent.action.SCREEN_ON //屏幕亮起android.intent.action.SCREEN_OFF//屏幕亮起android.intent.action.BATTERY_CHANGED //电池电量改变android.intent.action.CONFIGURATION_CHANGED //配置改变界面语言设备方向等配置信息android.intent.action.TIME_TICK //每分钟回调一次主要是系统安全问题这些广播都是比较频繁的或者是重要时机的避免普通应用乱用。 你以为就完了吗其实没有 上面五个广播都是 Intent.java 里面定义的广播网上很多就说了上面五个 其实还有其他广播静态注册是无法生效的。 二、静态注册无法生效的分析 1、Intent.java framework\base\core\java\android\content\Intent.java 看其中一个无法静态注册的广播 Intent.ACTION_TIME_TICK 说明 /*** Broadcast Action: The current time has changed. Sent every* minute. You emcannot/em receive this through components declared* in manifests, only by explicitly registering for it with* {link Context#registerReceiver(BroadcastReceiver, IntentFilter)* Context.registerReceiver()}.** p classnoteThis is a protected intent that can only be sent* by the system.*/SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION)public static final String ACTION_TIME_TICK android.intent.action.TIME_TICK;从注释代码其实可以看到 You emcannot/em receive this through components declaredin manifests, //你不能通过 manifests 声明进行注册 only by explicitly registering for it //只能动态注册它在Intent.java 全局搜索 “only by explicitly registering for it”,确实只有上面五个。 全局搜索一下源码发现其他地方也有这个声明的注释代码那么那些声明了的广播也是会静态注册无效的。 2、其他地方声明了不能静态注册的广播 framework\base\media\java\android\media\AudioManager.java /*** Broadcast Action: Wired Headset plugged in or unplugged.** You emcannot/em receive this through components declared* in manifests, only by explicitly registering for it with* {link Context#registerReceiver(BroadcastReceiver, IntentFilter)* Context.registerReceiver()}.** pThe intent will have the following extra values:* ul* liemstate/em - 0 for unplugged, 1 for plugged. /li* liemname/em - Headset type, human readable string /li* liemmicrophone/em - 1 if headset has a microphone, 0 otherwise /li* /ul* /ul*/SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION)public static final String ACTION_HEADSET_PLUG android.intent.action.HEADSET_PLUG;public static final String ACTION_MICROPHONE_MUTE_CHANGED android.media.action.MICROPHONE_MUTE_CHANGED;public static final String ACTION_SPEAKERPHONE_STATE_CHANGED android.media.action.SPEAKERPHONE_STATE_CHANGED;framework\base\telephony\java\android\telephony\TelephonyManager.java public static final String ACTION_EMERGENCY_CALLBACK_MODE_CHANGED android.intent.action.EMERGENCY_CALLBACK_MODE_CHANGED;public static final String ACTION_EMERGENCY_CALL_STATE_CHANGED android.intent.action.EMERGENCY_CALL_STATE_CHANGED;packages\modules\Wifi\framework\java\android\net\wifi\p2p\WifiP2pManager.java public static final String ACTION_WIFI_P2P_PERSISTENT_GROUPS_CHANGED android.net.wifi.p2p.action.WIFI_P2P_PERSISTENT_GROUPS_CHANGED;上面的广播基本没怎么用过这里不进行描述介绍了。 看一眼知道这些广播也是静态注册无效的就行了。 3、为啥静态注册的广播无效 其实我是猜测应该是AMS加载apk的流程中会加载静态注册的广播在这个过程可能会把某些静态注册的广播跳过处理所以静态注册这些广播是无效的。 下面是 Android AMS 加载 AndroidManifest.xml 广播过程如下 1、AMS 通过 ActivityThread 获取 ContextImpl 对象然后通过 ContextImpl 对象获取 PackageManager 对象。2、AMS 调用 PackageManager 的 getReceiverInfo 方法获取广播接收者的信息包括接收者的名称、所在的进程、导出状态等信息。3、AMS 调用 ActivityThread 的 getPackageInfo 方法获取应用程序的信息包括应用程序的名称、包名、版本号等信息。4、AMS 调用 PackageParser 的 parsePackage 方法解析 AndroidManifest.xml 文件获取应用程序的组件信息包括 Activity、Service、Receiver 等信息。5、AMS 遍历解析出来的组件信息找到与广播接收者匹配的组件。6、如果找到匹配的组件则将广播发送给该组件否则将广播发送给默认的广播接收者。我大概看了一下源码看不出啊加载的过程没有对某个静态广播判断的过程。 如果需要分析研究要在上面的第四五步过程进行详细的打印分析应该会有一下线索的。 目前没时间进一步进行分析了有搞懂的可以跟我说说哈 4、其他静态注册无法生效的广播 其实除了上面说明了 “only by explicitly registering for it” 的广播还有其他广播也是有些会有静态注册无法生效的问题。 比如最近接触的 只能动态注册的蓝牙部分广播 BluetoothAdapter.ACTION_STATE_CHANGED: //蓝牙开关 BluetoothAdapter.ACTION_SCAN_MODE_CHANGED: //蓝牙扫描状态修改 BluetoothAdapter.ACTION_CONNECTION_STATE_CHANGED: //蓝牙连接详细情况 BluetoothDevice.ACTION_BOND_STATE_CHANGED: //蓝牙绑定状态改变,绑定前后蓝牙变化广播其他一些蓝牙广播是可以静态注册正常收到的。 所以说整个系统除了上面说的的广播可能还有些广播是静态注册无效的。 如果要分析个所以然来还是要在上面的AMS加载流程中分析。 5、其他 Android framework 所有广播的定义 //我们常用的广播都定义在里面如果要新增可以在里面新增 framework\base\core\res\AndroidManifest.xmlprotected-broadcast android:nameandroid.intent.action.SCREEN_OFF /protected-broadcast android:nameandroid.intent.action.SCREEN_ON /protected-broadcast android:nameandroid.intent.action.USER_PRESENT /protected-broadcast android:nameandroid.intent.action.TIME_SET /protected-broadcast android:nameandroid.intent.action.TIME_TICK /protected-broadcast android:nameandroid.intent.action.TIMEZONE_CHANGED /protected-broadcast android:nameandroid.intent.action.DATE_CHANGED /protected-broadcast android:nameandroid.intent.action.PRE_BOOT_COMPLETED /静态广播注册无效解决 其实没啥好说的静态注册无效的动态注册就行了可以在自己应用写一个服务 在服务类里面注册一系列广播就可以了也能保障界面退出还能继续收到广播。 详解Android广播Broadcast的启动流程 https://www.jb51.net/article/279551.htm#_label1 AMS 四大组件之 Broadcast流程分析 https://blog.csdn.net/zhaozhenhui_1990/article/details/119904083
http://www.w-s-a.com/news/245164/

相关文章:

  • 个人网站发布怎么做建设银行网站收款怎么打明细
  • 网站整体色调网站建设都有什么类型
  • 比较简洁大方的网站软件工程四大方向
  • 大家称赞的网站建设常德小学报名网站
  • 做网站怎么建文件夹百度网盘搜索神器
  • 企业有域名怎么做网站淘宝推广平台
  • 学网站开发去哪学药品销售推广方案
  • 哔哩哔哩h5播放器深圳网站seo外包公司哪家好
  • asp做的手机网站wordpress 文章title
  • 网站验证码目录wordpress内嵌播放器
  • 文明网网站建设南昌市建设规费标准网站
  • 安康有建网站的公司吗做网站用什么网名好
  • 济南网站制作哪家专业西安市城乡建设网官方网站
  • 网站建设有趣小游戏怎样让网站优化的方式
  • 昭通做网站儿童编程教学入门教程
  • eclipse静态网站开发软文广告投放平台
  • 网站建设教学视频济南做网站需要多少钱
  • 网站免费做软件市工商联官方网站建设方案
  • 网站建设大体包含英铭长沙网站建设
  • 网站建设培训学校北京如何搜索网站
  • discuz论坛模板哪些网站容易做seo优化
  • 渭南公司做网站网站建设互联网推广
  • 公司网站app怎么做杭州建设局网站
  • 网站开发需要自己写代码吗12306网站多少钱做的
  • 策勒网站建设四川建设网有限责任公司招聘
  • 网站建设哪里有学网页界面设计论文
  • 怎么做外贸网站推广劳务公司网站怎么做
  • 滴答手表网站中铁建设集团有限公司招聘信息2021
  • 重庆富通科技有限公司网站新闻头条最新消息国家大事
  • 四字母net做网站怎么样企业代运营公司