- 博客(81)
- 资源 (7)
- 收藏
- 关注
原创 SYSTEM_UI_FLAG_IMMERSIVE和SYSTEM_UI_FLAG_IMMERSIVE_STICKY实现沉浸式功能的源码解析
rk3288 Android N 参考深入理解Android 卷三这里解决的是SYSTEM_UI_FLAG_IMMERSIVE和SYSTEM_UI_FLAG_IMMERSIVE_STICKY设置之后不会通过触摸屏幕调出导航栏,这种情况只要触摸屏幕就会调出导航栏SYSTEM_UI_FLAG_IMMERSIVE和SYSTEM_UI_FLAG_IMMERSIVE_STICKY区别在于SYSTEM...
2019-04-24 17:33:28 9978 2
原创 android init进程知识整理
init主要完成几个方面功能init作为1号进程,作为用户进程的始祖,完成从kernel space到user space切换,对android来讲完成以下几个功能:子进程死亡处理、uevent、watchdog功能、属性存取、init.rc文件解析处理。
2019-04-17 19:06:06 221
原创 android源码文章整理
研究学习android源码这里分为两条线进程线:包括android系统启动过程 kernel - init - zygoteinit - systemserver - 核心服务(ams、pms、wms等)- launcherhttps://www.processon.com/mindmap/5ca74b89e4b071e8c5463140基础设施线:包括binder 、handler消...
2019-04-08 14:09:01 228
转载 修改Android关机电量和关机温度
http://blog.chinaunix.net/uid-26926660-id-3329353.htmlAndroid系统默认是电量为0关机的,如果要修改成还有5%电量就关机怎么办?(吐槽一下:其实修改成5%关机也没什么意义,因为即便还有电量,开机后系统也会再次被关闭),不过确实有这样的需求,废话少说,这里简单分析怎么改: 2.分析 电池这一块自然少不了Android Ba...
2018-11-17 12:04:14 1213
原创 ShellCommand执行流程
为了方便调试系统服务,系统提供了shellcommand调试框架,我们使用的am、pm等都有使用这种功能,其他系统服务比如shortcutservice则是使用cmd命令来调试,具体的架构类图和流程如下,整体流程比较简单,所以这里就不具体展开。Cmd.cpp (frameworks\native\cmds\cmd)Java层的系统服务只需要实现onShellCommand用...
2018-11-17 11:03:55 4267 7
原创 Zygote进程1 - 概述
第一部分 why zygote1 加快应用进程创建速度,通过fork和写时复制技术copyOnwritezygote通过共享已运行的虚拟机的代码和内存信息,缩短应用程序运行所耗费的时间,并且,它会事先将应用程序要使用的Android framework要使用的类和资源加载到内存中,并组织成所用资源的链接信息。新运行的Android应用程序在使用所需资源时不必每次重新形成资源的链接信息,这会节省大量...
2018-06-03 18:22:46 834
原创 Activity启动过程中ActivityStack TaskRecord ActivityRecord创建或设置
Activity在启动的过程中需要获得一个ActivityRecord实体,表示Activity在ActivityManagerService中的状态,ActivityRecord创建与Activity的启动模式有关系:Activity有四种启动模式:standard:standard模式启动的Activity默认会进入启动它的Activity所属的任务栈TaskRecord这种启...
2018-04-14 18:36:36 1981
原创 Activity启动源码剖析
这里只列出简要几个流程,有时间再来详细分析其中的源码执行。简要流程第一步查找intent对应的activity,拿到packagemanager中保存的activityinfo,第二步转换成ActivityManagerService中的activityrecord第三步找到这个activityrecord对应的taskrecord和activitystack这个步骤基本流程和...
2018-04-14 18:21:24 344 1
原创 各种情形下activity生命周期转换
1 home键按下 onPause - onStop返回 onRestart - onStart - onResume2 锁屏锁屏 onPause - onStop解锁 onRestart - onStart - onResumehome键和锁屏虽然生命周期相同,但是触发流程不一样,home键走的正常的home activity(launcher)切换流程,栈顶act...
2018-04-14 18:12:50 461
原创 android生命周期总结
关于activity生命周期转换记住一点同时只有一个activity处于onResume状态,可能有多个activity处于onstop状态,因为在activitymanagerservice中有一个成员mResumeActivity,而且只有前一个activity执行onPause之后,下一个activity的onResume流程才会执行1 几个生命周期的特点on...
2018-04-14 18:10:12 1225
原创 Activity相关点
关于android知识,看了一些源码,过久了就会忘了,还是需要及时总结,方便以后查阅。基础知识1 一般生命周期以及转换,以官方图为例2 源码剖析涉及到进程、关键类3 源码过程中的关键点简要流程第一步查找intent对应的activity,拿到packagemanager中保存的activityinfo,第二步转换成ActivityManagerService中的ac...
2018-04-14 18:01:59 148
原创 android重复按键与onKeyLongPress长按事件触发
参考 深入理解Android卷三 - 深入理解Android输入系统重复按键的产生:在用户持续按下一个按键到抬起之间,应用程序能够收到多个onKeyDown时间,并且getReaptCount的返回值会不断累加,并且当且仅当第二次调用KeyEvent.isLongPress返回true。z这个工作是InputDispatcher来完成。虽然有些按键输入设备支持按键重复按下事件的回报工作(如
2017-12-16 22:28:35 7512
原创 Dialog ParentWindow android.view.WindowManager$BadTokenException源码剖析
08-07 21:26:43.506: ERROR/AndroidRuntime(9390): android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application 产生问题原因解析:使用getApplicationContext()里面的是不包含t
2017-11-05 00:12:00 580
原创 android OpenGL es图书和学习资料
官网 https://www.khronos.org/opengles/android API指南 OpenGL ES https://developer.android.com/guide/topics/graphics/opengl.html官网android 培训Displaying Graphics with OpenGL ES https://de
2017-09-16 00:17:16 1019
原创 Telephony-Uicc双卡管理
这个部分原稿来自于Android6.0的phone应用源码分析(9)——UICC卡管理 主要讲述双卡中卡信息保存和加载,包括UiccController,UiccCard、SimRecords等双卡相关的信息。
2017-04-29 15:35:53 1020
原创 ContentService注册和更新机制
ContentService完成数据内容注册和更新的机制。在N平台上SystemServer通过SystemServiceManager.startService的方式拉起ContentService,并且注册到ServiceManager中。 从图中可以看出ContentService完成注册和更新机制的原理:当客户端注册的时候会将ContentObserver注册到ContentServi
2017-04-23 18:15:22 834
原创 sim卡联系人框架
sim卡联系人是框架提供的一个基本功能,提供读取卡里面的联系人,卡联系人可以分为2g卡和3g卡,3g卡和2g卡的主要区别:3g卡的容量更大,一般可以存储500个联系人,2g卡一般存储250个联系人;3g卡可以存储emails和anrs字段。因此本章将2g卡和3g卡联系人的加载更新操作分别进行讲解。分为卡联系人的加载,更新和删除流程,具体在加载的过程中需要区分2g卡和3g卡。现在2g卡比较少见...
2016-08-07 10:03:37 1079 2
原创 CatService框架
这块代码分为三层,framework - service - activity,整体写的比较乱,细节处理可能会有问题,可能用的人比较少,所以比较少关注。CatService监听的其实没有用处的代码 mUiccApplication.registerForReady(this, MSG_ID_SIM_READY, null); mIccRecords.register
2016-08-02 10:54:25 667
原创 SubscriptionInfoUpdater.updateCarrierServices解析
SubscriptionInfoUpdater.updateCarrierServices在卡状态变化之后都会调用。主要是触发系统中运营商相关的配置信息。private void updateCarrierServices(int slotId, String simState){ CarrierConfigManager configManager = (Carrie
2016-08-02 10:06:19 563 1
原创 SubscriptionInfoUpdater监听卡状态广播的处理
SubscriptionInfoUpdater里面有监听卡状态广播,卡状态广播都是从IccCardProxy中发送的sticky广播。其中ACTION_INTERNAL_SIM_STATE_CHANGED是Android M上新增的用来处理sim locked和sim loaded事件,经过SubscriptionInfoUpdater处理之后才会向外发送ACTION_SIM_STATE_CHAN
2016-08-02 09:53:11 1166
原创 Android M CarrierService框架
本章讨论的所涉及到的文件如下:packages\apps\CarrierConfig\src\com\android\carrierconfig\DefaultCarrierConfigService.java frameworks\base\core\java\android\service\carrier\CarrierService.java frameworks\base\core\j...
2016-07-23 10:08:00 5289
原创 SubscriptionInfo框架解析
本章讨论所涉及到的类vendor\qcom\proprietary\telephony-fwk\opt\telephony\src\java\com\qti\internal\telephony\UiccCardProvisioner.javavendor\qcom\proprietary\telephony-fwk\opt\telephony\src\java\com\qti\in
2016-07-22 22:22:41 1641
转载 欢迎使用CSDN-markdown编辑器
欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl
2016-07-17 16:41:39 396
原创 Java StringBuilder 清空Clear方法
StringBuilder,StringBuffer中 没有提供clear或empty方法。清空有3种方法:1)新生成一个,旧的由系统自动回收2)重用StringBuilder对象,使用delete(start,end)3)重用StringBuilder对象,使用setLength(newLength)将三种方法循环1000万次,代码:public class St
2015-09-30 12:21:43 6621
原创 全面解释java中StringBuilder、StringBuffer、String类之间的关系
String的值是不可变的,这就导致每次对String的操作都会生成新的String对象,不仅效率低下,而且大量浪费有限的内存空间,StringBuffer是可变类,和线程安全的字符串操作类,任何对它指向的字符串的操作都不会产生新的对象,StringBuffer和StringBuilder类功能基本相似1. String 类 String的值是不可变的,这就导致每次对String的
2015-09-30 10:32:27 503
转载 Android开发之Intent跳转到系统应用中的拨号界面、联系人界面、短信界面
1、跳转到拨号界面,代码如下:1)直接拨打Intent intentPhone = new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + phoneNumber));startActivity(intentPhone);2)跳转到拨号界面Intent intent = newIntent(
2015-09-30 09:02:34 421
原创 Android手机联系人变化监听
//监听联系人数据的监听对象 private static ContentObserver mObserver = new ContentObserver( new Handler()) { @Override public void onChange(boolean selfChange) { // 当联系人表发生变化时进行相应的操作 } };
2015-09-30 08:35:38 900
原创 Java Classloader总结
Classloader总结除了顶层的启动类加载器外,其余的类加载器都应该有父类加载器(通过组合实现),包含一个父类的对象。没有指定父加载器的默认是App Classloader private final ClassLoader parent;protected ClassLoader() { this(checkCreateClassLoader(), getSy
2015-08-19 10:23:24 380
转载 Red Hat Linux 9下安装VMware Tools
Red Hat Linux 9下安装VMware Tools 因为工作需要,昨天开始正式接触神交已久的Linux。用VMware 6.0虚拟了Red Hat Linux 9作为学习环境。 Linux的安装过程一切顺利,为了熟悉安装还把英文界面和中文界面各安装了一次,并利用这个过程强记了Linux中的
2014-10-28 23:17:31 639
原创 fedora 2在Linux下删除文件行末尾的^M符号方法
由于DOS下的编辑器和Linux编辑器对文件行末的回车符处理不一致,在Linux下经常能看到C文件或者TXT文件每行末尾都有一个^M符号,这个会导致shell脚本运行错误。 我们可以采用VI的编辑器命令进行删除。 下面是我自己发明的一种方法和石头提供的,都差不多一样,利用VI的查找替换命令,将^M替换为空格符 (1):在VI的编辑模式下,ESC shilt +
2014-10-28 23:15:46 443
原创 新手的fedora之旅----如何关闭自动更新
默认情况下,每次启动fedora都会启动yum-update服务去后台自动搜索可用的更新,这个过程非常冗长,特别是刚装好系统的时候,很多patch需要下载,该服务运行的时候通常会让cup占用上到100%,奇怪的是在系统监视器中却未找到这个进程,刚开始我误以为是firefox的问题,搞了好久,后来发现是自动更新,建议关闭该服务,具体方法如下:在系统-》管理-》服务里面(可能是最后一项服务)有
2014-10-28 23:15:05 1400
原创 sqlserver 2000 如何修改sa登陆密码?
提问者: figo945a - 二级最佳答案操作步骤如下: 1. 打开企业管理器,依次展开服务器组,然后展开服务器。 2. 打开“安全性”文件夹,单击“登录”,然后用右键单击“Sa”,执行“属性”命令。 3. 弹出“SQL Server登录属性”对话框,在“SQL Server身份验证”密码栏,输入最新密码。 4. 单击“确定”按钮,弹出“确认密码”对话框,再输一遍
2014-10-28 23:14:17 562
原创 windows下忘记mysql超级管理员root密码的解决办法
如果你是服务器是 windows xp/2000/2003/nt 都可以使用这个方法来找回丢失 MYSQL超级管理员root的密码1,停止MYSQL服务,CMD打开DOS窗口,输入 net stop mysql2,在CMD命令行窗口,进入MYSQL安装目录 比如 d:\mysql20080505\bin3,进入mysql安全模式,即当mysql起来后,不用输入密码就能进入数
2014-10-28 23:13:34 358
原创 Myeclipse快捷键设置大全
一般默认情况下,Eclipse ,MyEclipse 的代码提示功能是比Microsoft Visual Studio的差很多的,主要是Eclipse ,MyEclipse本身有很多选项是默认关闭的,要开发者自己去手动配置。如果开发者不清楚的话,就不知道Eclipse ,MyEclipse的代码提示功能一样能像Microsoft Visual Studio的代码提 示功能一样强大。先举个简
2014-10-28 23:12:45 474
原创 cin.clear()、cin.sync()和cin.ignor()的用法
一、cin.clear()、cin.sync() cin.clear()是用来更改cin的状态标示符的。 cin.sync()是用来清除缓存区的数据流的。如果标示符没有改变那么即使清除了数据流也无法输入。所以两个要联合起来使用。例如:#includeusing namespace std;int main(){ int a; cout<<"输入
2014-10-28 23:12:19 589
原创 java 容器类的实现
import java.util.Arrays;public class MyContainer { private static final long serialVersionUID = 8683452581122892189L; private transient Character[] elementData; private int count
2014-10-10 17:48:00 587
转载 Arrays.asList返回的List与new ArrayList的区别
前几天写代码的时候用到将Set转换为List然后继续进行操作,向里面添加元素的时候报错了,代码逻辑类似下面:import java.util.Arrays;import java.util.HashSet;import java.util.List;import java.util.Set; public class Test {
2014-09-14 11:43:22 860
转载 Java程序员们最常犯的10个错误
本文由 ImportNew - 林林 翻译自 programcreek。欢迎加入Java小组。转载请参见文章末尾的要求。1.将数组转化为列表将数组转化为一个列表时,程序员们经常这样做:1List list = Arrays.asList(arr);Arrays.asList()会返回一个Ar
2014-09-14 11:36:46 334
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人