自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

寧靜致遠

Android Framework

  • 博客(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进程2 - 启动流程

2018-06-03 18:25:54 198

原创 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

原创 Java快速排序

参考http://blog.csdn.net/ljianhui/article/details/16797431直接上代码

2014-09-09 21:38:39 378 1

Java7 语言规范

Java7 语言规范,讲述Java语言的方方面面。

2014-05-05

仿windows记事本

这位是我刚做的一个windows记事本;使用的是JTextPane做的,已经实现全部的功能;还就有语法高亮和插入图片的功能

2010-12-12

统计学课件完整版下载

统计学 课件 下载完整版,这是我辛苦收集的,希望你对你有所帮助,

2010-04-26

C++程序设计(谭浩强)例题和习题答案.rar

C++程序设计(谭浩强)例题和习题答案.rar

2010-04-26

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除