ams

Android面试题集:以前烂大街的四大组件-Activity,面试重提这些知识点你还记得吗?

风流意气都作罢 提交于 2021-02-18 23:15:16
前言 虽然有很多面试的文章里都有这些题目,但是我每次在看的时候,总是会觉得有些分散,复习的时候还要重新去找到对应的文章,所以我就想着自己来整理一下,并且把题目给分一下类型;自己整理可以帮助我复习的同时还可以巩固一遍;这次主要是4大组件相关,后续我会继续整理,觉得有帮助的可以点个赞。 接下来是关于Activity的面试题了: 描述一下Activity 生命周期? onCreate() Activity第-次被创建的时候调用,一些初始化操作可以在这里完成。 onStart() 这个方法在Activity 由不可见变为可见的时候调用。 onResume() 这个方法在Activity 准备好和用户进行交互的时候调用。此时的Acivity一定位于返回栈的栈顶,并且处于运行状态。 onPause() 这个方法在系统准备去启动或者恢复另-个Activity的时候调用。 onStop() 这个方法在Activity 完全不可见的时候调用。它和onPause()方法的主要区别在于,如果启动的新Activity 是一个对话框式的Activity,那么onPause()方法会得到执行,而onStop()方法并不会执行。 onDestroy() 这个方法在Activity被销毁之前调用,之后Activity的状态将变为销毁状态。 onRestart

AMS5601的ardunio和STM32驱动开发

纵饮孤独 提交于 2021-02-16 17:59:16
AMS5601的ardunio和STM32驱动开发 本文有 麦粒电子 撰写,并提供相应产品服务。 前言 目前ams关于磁编码芯片用的比较多的可能是ams5600,能够输出pwm信号,电压信号以及I2C通信数字读取。这款芯片目前在市面上也比较容易买到,价格相对也便宜。 有需要的AS5600模块可以点击链接了解。 但是在编码器应用中,尤其在在电机应用。对编码器的输出信号还有一种A、B、Z相对信号的方式。在这种情况下ams5600绝对值位置检测显得就不能满足要求。由此,我们把目光注意到了ams5601。这款芯片功能和ams5600一脉相承,只是多了一个A、B向输出的类型和按钮检测。 简介 AS5601是一个12bit精度的磁编码器芯片,能够输出增量AB信号,iic信号,push信号。引脚信息如下图所示。 下图为本文使用的** as5601模块 ** 值得注意的是as5601内部有给LDO稳压芯片,所以其可以有2种电压操作模式(5V和3.3V),相应的电路图如下图所示。可根据自己的情况选择。 开发 准备:径向圆形磁铁;ardunio开发板;as5601模块;杜邦线若干。 1.将控制板利用杜邦线连接as5601的相应IIC,AB,电源等接口。 2.圆形磁铁放置再AS5601芯片正上方,最远距离为3mm,当然如果磁铁磁性够强,也可以更远。 3.编写ardunio驱动代码。如下图所示

Activity启动过程

让人想犯罪 __ 提交于 2021-02-16 11:32:43
根Activity 启动过程中会涉及4个进程,分别是Zygote进程、Launcher进程、AMS所在进程(SystemServer进程)、应用程序进程,关系图如下 其中步骤2采用的是Socket通信,步骤1和4采用的是Binder通信 如果是 普通Activity 启动过程会涉及两个进程:AMS所在进程和应用程序进程 启动过程 第一步:Launcher请求AMS过程 1)Android8.0之前是通过ActivityManagerNative的getDefault来获取AMS的代理对象的,现在这个逻辑封装到了ActivityManager中而不是ActivityManagerNative中 2)Android8.0之前并没有采用AIDL,而是采用了类似AIDL的形式,用AMS的代理对象ActivityManagerProxy来与AMS进行进程间通信,Android8.0去除了ActivityManagerNative的内部类ActivityManagerProxy,代替它的是IActivityManager,它是AMS在本地的代理。 第二步:AMS到ApplicationThread的调用过程 1)UserHandle.getCallingUserId(),这个方法会获得调用者的UserId,AMS根据这个UserId来确定调用者的权限 2

《Android插件化开发指南》面世

一个人想着一个人 提交于 2021-02-12 06:53:00
本书在京东购买地址: https://item.jd.com/31178047689.html 本书Q群:389329264 (一)这是一本什么书 如果只把本书当作纯粹介绍Android插件化技术的书籍,那就大错特错了。 本书在研究Android插件化之余,还详细介绍了Android系统的底层知识,包括Binder和AIDL的原理、四大组件的原理、App的安装和启动流程、Context和ClassLoader的家族史。没有罗列大量的Android系统中的源码,而是以一张张UML图,把这些知识串起来。 本书详细介绍了Android中的资源机制,包括aapt命令的原理,resource文件的组成,以及public.xml的使用方式,顺带还提及了如何自定义一个Gradle插件化。 此外,本书还介绍了so的加载原理,尤其是动态加载so的技术,可以帮助app进行瘦身;探讨了H5降级技术,可以实现任何一个原生页面和H5页面的互换,介绍了反射技术,以及jOOR这个有趣的开源框架;介绍了Android中的动态代理技术Proxy.newProxyInstance方法。 如果读者能坚持把这本书从头到尾读完,那么不光掌握了插件化技术,同时也把上述所有这些知识点全都系统的学习了一遍。也许Android插件化会随着Google的限制而有所变化甚至消亡,但我在本书中介绍的其他知识,仍然是大有用武之处的

商业气象服务和公共气象服务差异几何?

馋奶兔 提交于 2021-02-08 13:19:24
点击上面 观天者说 ,获取全球气象行业资讯 美国 《福布斯》 商业周刊1月24日刊登了一篇短评:《商业气象服务与公共气象服务差异几何?》 作者吉姆·佛斯特(Jim Foerster)是商业气象公司 DTN 的气象服务总监。DTN是世界上最大的商业气象服务公司,他和他的团队在航空,运输,海事,能源,农业和安全市场提供可行的天气预报和咨询服务。 吉姆爷爷是《福布斯》的高产作者 2019年就在福布斯网站发表了47篇文章 吉姆·佛斯特(Jim Foerster)也是全球198位 认证气象咨询专家 (Certified Consulting Meteorologists,CCM)之一。 CCM是美国气象学会(AMS)提供的职业资质认证,所谓气象咨询专家,能够将天气信息应用到许多实际挑战中的专家。 在体制外混 还是要有个专业性的官方认证 在中国,气象部门的基本定位属于 科技型、公益性 单位,但同时商业气象服务正在发展中。这个题目,也是很多气象人关注的,观天者把这篇文章翻译给大家供参考。 《商业气象服务与公共气象服务 差异几何?》 天气对社会起着重要作用。每年天气对美国国民生产总值的影响约为 1万亿美元 ,根据最近的几项研究,美国 超过95%的公司 都在使用气象信息。 根据美国国家气象局(NWS)的数据, 天气每年为美国企业创造130亿美元的价值 ,无论是公共部门还是商业公司

读Android源码-冷启动时的ActivityThread

笑着哭i 提交于 2021-02-02 00:58:11
冷启动创建应用时,ActivityThread的主要方法: main() -- 1. 开启消息循环 -- 2. 通知ActivityManagerService -- 3. 添加GCWatcher handleBindApplication() -- 1. 创建LoadedApk -- 2. 创建Instrumentation -- 3. 创建Application -- 4. 通过Instrumentation调用Application的onCreate()方法 main() main方法是一个应用创建的入口,他主要做了3件事 1. 开启消息循环 调用Looper.prepareLoop() Looper.loop(),开启主线程的消息循环,以便于ApplicationThread调用ActivityThread中的生命周期方法。 public static void main(String[] args) { ... Looper.prepareMainLooper(); ActivityThread thread = new ActivityThread(); thread.attach(false); if (sMainThreadHandler == null) { sMainThreadHandler = thread.getHandler(); } ...

Android 高级进阶之深入剖析消息机制

拈花ヽ惹草 提交于 2021-01-24 12:35:39
阅读时间:8 分钟 坐稳了没?要开车了哦 写在前边 今天分享的内容是深入剖析 Android 的消息机制,有些人问了,一些功能会用不就行了吗?为什么还要分析底层源码呢?今天小鹿告诉你的是很多开源的项目都已经不需要我们造轮子了,重复造轮子是多么愚蠢的一件事。但是,Android 的底层源码和一些功能的实现让我们学习到底层的模式和逻辑实现。 学编程什么最重要,当然是逻辑思维了,即使你什么功能都能实现,逻辑思维能力差照样啥都干不了。你的思维逻辑能力差,在技术路线上已经决定了你的高度。 Android 的消息机制 Android 的消息机制主要是指 Handlerr 的运行需要底层的 MessageQueue 和 Looper 的支撑。 (1)MessageQueue 的中文翻译是消息队列。以队列的形式对外提供插入和删除工作。虽然叫做消息队列,但是内部存储结构并不是真正的队列,而是以单链表的数据结构来存储消息列表。 (2)Looper 的中文翻译为循环,我们叫它消息循环。由于 MessageQueue 只是一个存储单元,不会去处理消息。而 Looper 确弥补了这个功能,Looper 会以无限无限循环的形式去查找是否有新的消息,有的话就去处理消息,否则就一直等待。 学习思维导图: 以后文章中的思维导图是小鹿给大家精心整理的,这样对每篇分享的文章都有一个清晰地结构,有利于复习和整理。 一

干货 | 彻底理解ANDROID BINDER通信架构(下)

只谈情不闲聊 提交于 2021-01-16 02:00:23
2.10 IPC.waitForResponse 在这个过程中, 常见的几个BR_命令: BR_TRANSACTION_COMPLETE: binder驱动收到BC_TRANSACTION事件后的应答消息; 对于oneway transaction,当收到该消息,则完成了本次Binder通信; BR_DEAD_REPLY: 回复失败,往往是线程或节点为空. 则结束本次通信Binder; BR_FAILED_REPLY:回复失败,往往是transaction出错导致. 则结束本次通信Binder; BR_REPLY: Binder驱动向Client端发送回应消息; 对于非oneway transaction时,当收到该消息,则完整地完成本次Binder通信; 规律: BC_TRANSACTION + BC_REPLY = BR_TRANSACTION_COMPLETE + BR_DEAD_REPLY + BR_FAILED_REPLY 2.10.1 IPC.executeCommand 处于剩余的BR_命令. 2.11 IPC.talkWithDriver binder_write_read结构体用来与Binder设备交换数据的结构, 通过ioctl与mDriverFD通信,是真正与Binder驱动进行数据读写交互的过程。 ioctl()方法经过syscall最终调用到Binder

又一开源项目爆火于GitHub,Android高级插件化强化实战

只愿长相守 提交于 2021-01-11 14:23:30
前言 相信大家都知道安卓应用开发的大量难题,其实最后都需要插件技术去解决。 现今插件技术的使用非常普遍,比如微信、QQ、淘宝、天猫、空间、携程、大众点评、手机管家等等这些大家在熟悉不过的应用都在使用。 插件技术可以给项目开发带来巨大的好处,比如:并行高效开发、模块解耦、解除单个dex函数不能超过65535的限制、动态更新升级、按需加载等等。 掌握好插件技术,需要如下的安卓基础和相关知识,例如: Android应用程序安装,加载过程 Android应用运行机制,生命周期调用原理 Android应用资源编译打包原理 Android应用读取资源原理 Android系统AMS、PMS、NMS等系统服务的运作原理 增量更新 HOOK等技术 本文将从基础的插件化原理到Android插件化初探再到大厂架构演化实战应用,总结出了较为全面与完整的安卓插件技术与插件化对 Android开发的重要性。 插件化原理 1.类加载 2.双亲委托机制 3.资源加载 4.四大组件支持 5 ProxyActivity代理 6 hook方式 7 其他组件 8 Android动态加载框架DL的架构与基本原理解析 9 Android 插件化框架 DynamicLoadApk 源码分析 Android插件化初探 1.从零开始实现一个插件化框架(1) 概念 插件化解决的问题 各插件化框架对比 插件化实现

工作日志2010年、二

余生颓废 提交于 2020-12-31 11:00:29
1. 8月开始进行全省大夜班集中项目,把全省的夜班话务全部转到东莞来处理,采用的是二次呼出重定向技术。先上线大夜班集中专项需求, 部署了专用的服务,在集中配置台、IUAS、Dtproxy上配置各地的数据源,随后的两个月中分地市把全省夜班话务割到东莞,每天8点前把数据从东莞回传到各中心。 2. 8月公司安排了一批研发进驻现场各局点,全面挖掘各局点的系统隐患,历时一个多月对系统进行了一次彻底的整改,进行了重大的系统升级,目的就是防止亚运期间出现重大故障。又根据亚运期间可能出现的问题,进行了多次系统应急演练,调整和完善了演练方案和流程,做到每个现场工程师熟悉应急流程、掌握应急方案、在发生故障时能从容应对。 3. 9月初周五提取每月例行数据时,查看表空间还有几个G的空间就没有清理以前的数据,开始日结上月的数据。到周一来后查看日结是否完成时,发现只日结了十多天的数据,一查看表空间已经百分之百满了,只能把表全部truncate了,然后再重新日结。好在日结表用的是放临时数据的专用表空间,如果是放到其它域的表空间,后果可想而知。看来以后再日结大量数据时,必须要充分估计数据量的大小,不然会出大故障的。9月中旬佛山局点割接到NGCC系统,佛山割接前后用了三个月。 4. 10月国庆过后东莞中心四地市NGCC割接工作正式启动,先召开项目启动会,参会人员有客户业务部门、BSC部门、定制开发、维保、工程团队