- 博客(51)
- 资源 (15)
- 收藏
- 关注
原创 **SystemUI 超详细解析:架构、流程与核心实现**
**触发点**:`SystemServer` 完成关键服务初始化后,调用 `ActivityManagerService.systemReady()`,启动 SystemUI。// 调用每个组件的initialize()- **启动命令**:通过 `SystemService` 启动 `SystemUIService`。- **组件加载**:从 `config.xml` 加载所有 SystemUI 组件。##### **2. 与 ActivityManagerService 的协作**
2025-03-03 21:39:23
916
原创 ### **Android核心系统服务深度解析(AMS/ATMS/WMS/DMS)**
生命周期状态:`INITIALIZING` → `CREATED` → `STARTED` → `RESUMED` → `PAUSED` → ... → `DESTROYED`。- `frameworks/base/core/java/android/hardware/display/DisplayManagerGlobal.java`(客户端接口)- `frameworks/base/core/java/android/app/ActivityManager.java`(客户端接口)
2025-03-03 16:45:21
1174
原创 C++ ,JNI, Java 数据传递全解(二)
上方的代碼,讲一下参数,第一个是class,自不必说,第二个,是JNI固定的,代表调用的是该类的构造方法,那第三个参数,就不是固定的了。一定要追到源码底部,去看要传递的参数类型是什么,查找C++中参数的typedata是啥,如果是基础数据类型,那自不必说,按照我们上篇文章说的传入相对应的就好了,而对于一些特殊的,那我们就需要费点事了。此处的参数,对应的是我们Java中最开始创建的方法参数,切记,丝毫不能差了,routObj和routeEvRangeObj 都是对象类型的参数,用刚才的方法,可以获取到。
2023-03-10 14:54:38
575
1
原创 JNI 使用案例详解(一)
首先,C++ 我们创建文件时,会生成两个文件,例如,我们命名为:TestCommitDemo.cpp,一个是.h文件,一个是.cpp 文件,这两个文件,一个是用来声明的,一个是用来实现的。首先,JNI,我的理解,他就是java和C之间的桥梁,很多写C++和JAVA的人不会写JNI,因为这两个方向的人,正常情况下都不会去用JNI来做什么,只有一些功能需要在C层来完成,而java层只是用来调用C层实现的代码逻辑的时候,就需要使用JNI来完成这部分工作了。注意,.h 和 .cpp 内的两个方法名必须一模一样。
2022-09-13 14:09:29
1043
原创 Android 四大组件中的两个的工作流程(Activity和Service)
一,Activity的启动过程Activity 的启动过程分为两种, 一种是根 Activity 的启动过程,另 一种是普通 Activity的启动过程。根 Activity 指的是应用程序启动的第一个 Activ町,因此根 Activity 的启动过程一般情况下也可以理解为应用程序的启动过程。普通 Activ即指的是除应用程序启动的第一个 Activity 之外的其他 Activity 。这里介绍的是根 Activity 的 启动过程 ,它和普通 Activity的启动过程是有重 叠部分的,只不过根
2020-12-12 16:39:14
408
原创 android 系统启动流程
1,init 进程启动过程 init进程是Android系统中用户空间的第一个进程,此进程创建Zygote(孵化器)和属性服务。下面来说一下init进程启动电源以及系统启动 引导程序BootLader Linux内核启动(系统文件中寻找init.rc文件,并启动init进程) init进程启动在init进程中,查看相关源码发现,作为一个java程序员,着实看不太懂c++的代码,但是能总结出他们在这里干了些啥其实init进程启动,虽然执行了很多很多的操作,但是总的来说,他做了以下三..
2020-12-12 14:16:35
222
原创 Android View事件----全解
ViewViewRoot 对应于 ViewRootImpl 类,它是连接 WindowManager 和 DecorView 的纽带,View 的三大流程均是通过 ViewRoot 来完成的。在 ActivityThread 中,当 Activity 对象被创建完毕后,会将 DecorView 添加到 Window 中,同时会创建 ViewRootImpl 对象,并将 ViewRootImpl 对象和 DecorView 建立关联View 的整个绘制流程可以分为以下三个阶段:measu.
2020-12-09 16:48:44
646
原创 Handler机制原理----全解
Handler机制,我们就会想到,他有四个重要的对象组成,分别是:Handler,Message,MessageQueue,Looper.那Handler是如何工作的呢?例如,你想刷新主界面的TextView,无奈你不在主线程,此时你就会包装好Message,然后声明一个Handler,让Handler将你的Message送往主线程(Looper),Handler将你的Message送到主线程后,还需要排队等待,等轮到你的时候,主线程就会告诉Handler,这个Message可以处理了,你负责分发一
2020-12-09 15:18:46
1759
原创 Android进程间通信(全解)
进程间通信简称IPC(Inter-Process Communication).Android 基于Linux,,而 Linux 出于安全考虑,不同进程间不能之间操作对方的数据,这叫做“进程隔离”。这样做的目的是为了保证每个进程的安全。IPC方式名称 优点 缺点 适用场景 Bundle 简单易用 只能传输 Bundle 支持的数据类型 四大组件间的进程间通信 文件共享 简单易用 不适合高并发场景,并且无法做到进程间即时通信 无并发访问情形
2020-12-07 12:59:13
1728
原创 Activity 四种启动模式以及应用场景
Activity有四种启动模式,在介绍这四种启动模式之前,我们需要先知道,为什么Google会为Activity设置四种启动模式呢?我们先来介绍一个概念:任务栈任务栈:1,程序在创建时,会创建一个任务栈,这个任务栈的作用是用来存储启动和创建的Activity2,此任务栈包含了一个集合,让存储的任务栈给用户有序的列出来,以至于不丢失他们的状态3,任务栈用来保存Activity的状态4,退出程序时,清除任务栈中的Activity,任务栈销毁,程序退出任务栈的缺点:1,每开启一次页.
2020-12-05 17:38:14
1071
原创 手绘一张图详细介绍GC回收机制
GC Root 包括: 虚拟机栈中引用的对象 方法区中类静态属性实体引用的对象 方法区中常量引用的对象 本地方法栈中JNI引用的对象 清除标记算法伪代码实现如下:标记实现:mark_phase(){ for(r : $roots)//循环遍历空间对象 mark(*r)}mark(obj){ if(obj.mark == FALSE) obj.mark = TRUE for(child : chi...
2020-12-05 16:23:24
168
原创 Android Gallery2 开发经验整理
首先一点,通过Gallery2的源码分析来看,他并不是一个普通的app应用,所有界面并不是普通的View.而是通过openGL来做的!所以,一定不要用普通的View的想法来分析Gallery2的源码!下面先说一下Gallery2的结构吧!首先,Gallery2通过Manifest可以看出,Gallery2初始化的位置是GalleryAppImpl.java,数据的初始化都是在这里实现...
2019-11-04 15:23:26
1852
原创 android 录屏流程以及权限管理(底层权限修改及讲解)
android正常录屏流程需要申请权限,只需要调用正常的api,用户自己点击确定按钮,即可获取到录屏权限,上层app获取录屏权限的流程,废话不多说,下面看代码:public void takeScreenshot(Activity activity, int width, int height, ScreenshotCallback cb) { this....
2019-08-20 16:33:52
14327
9
原创 android 自定义 TextView 点击字体镂空效果
网上好多字体镂空效果都是单行的,及没有点击效果的,所以,我没办法就自己写了一个TextView ,目的是自定义这个,点击的时候才是镂空效果,但是,平时的时候是常态,就像是selector一样,这是一个工具类,你们拿去直接用就行了public class ShowPalettePageTextView extends View { public static final int BA...
2019-04-30 13:00:09
401
原创 android 原生 bitmap 生成pdf文件
写这篇文章,是因为我编写这块功能时,公司要求能用android原生代码就不要用第三方,所以,我找了好久都没找到谁在用原生代码生成pdf文件,尤其是把bitmap写入pdf中,所以,在这里,我把原生 生成pdf文件的代码写下来了 ,与大家共享,但是,目测,这个原生的代码只适用于android 6.0以上应该,因为我们毕竟没有作什么特殊处理,bitmap本身文本就很大,如果把bitmap转成png...
2019-04-30 12:55:06
2274
2
原创 android 本地服务器创建,以及利用本地服务器分享文件
首先,我们利用众所周知的本地服务器作为平台,这个本地服务器是我修改好的,大家如果想要原版的,我一起放在里面了,可自由下载,下载地址如下:https://download.youkuaiyun.com/download/u011228868/11153162(本来不想要积分的,但是我没找到在那里修改积分。。。。)其次,我们要写自己的服务器,及继承NanoHTTPD 的webservice,这里面设置我们...
2019-04-30 12:48:05
1288
转载 webView开发问题详解
转载请注明出处 https://blog.youkuaiyun.com/typename/article/details/39495409 powered by meichal zhao概览:Android WebView 做为承载网页的载体控件,他在网页显示的过程中会产生一些事件,并回调给我们的应用程序,以便我们在网页加载过程中做应用程序想处理的事情。比如说客户端需要显示网页加载的进度、网页加载发生错误等等...
2018-03-14 10:00:20
269
转载 Android Hybrid 和 WebView 解析
这篇博客主要来介绍 WebView 的相关使用方法,常见的几个漏洞,开发中可能遇到的坑和最后解决相应漏洞的源码,以及针对该源码的解析。 转载请注明出处:http://blog.youkuaiyun.com/self_study/article/details/54928371。 对技术感兴趣的同鞋加群 544645972 一起交流。现在市面上的 APP 根据类型大致可以分为 3 类:Native A...
2018-03-12 15:52:08
354
转载 深入对比Glide 和 Picasso
Glide 和 Picasso 可以说是目前 Android 上最流行的图片加载库了。大部分安卓应用开发人员都有使用过这两个库在他们的开发工作中。这两个库也都确实提供了大量图片加载的功能,而且也都经过了很多应用的检验,是可靠可信的。表面看上去似乎两者工作原理很相似,但是实际上是有着很大差别的,主要体现在下面几个方面:下载图片的方式图片的缓存机制加载到内存的机制本文主要会围绕这几个方面来
2018-02-01 15:22:04
328
原创 Picasso源码解析
Picasso作为一个非常棒的android第三方图片加载库,在Github上获得了高达7000多的star。Picasso.with(context).load(“image url”).into(imageView);这么简单的一行代码就完成了在Android中加载图片的功能,这其中,Picasso还帮我们自动完成了一些android中处理图片的问题:例如在adapter中ImageVie
2018-02-01 14:54:27
221
转载 Android图像处理整理
我们常用的处理方式基本都是在对像素矩阵按照一定的数学规律处理得到的,常用的如下;我们也可以通过一个开源的图片处理库(C++)的方式处理,opencv,官网:http://opencv.org/ 下载对应平台的SDK,这个库很强大,里面基本包含了常用的处理操作,而且效率很高。对应的文字处理库是OCR(顺带提一下)。以下是参考文献:点击打开链接点击打开链接点击打
2018-02-01 12:35:12
4868
1
原创 android开发中对于手机电量的优化
关于android开发的app中,特别是直播类型的app耗电的情况,所以一定要优化手机耗电方面的问题先说一下app耗电的原因吧第一,大数据量的传输;第二,不停的在网络间切换第三,解析大量的文本数据;知道耗电原因了,那么就说一下相关的优化建议1,在需要网络连接的程序中,首先检查网络连接是否正常,如果没有网络连接,那么就不需要执行相应的程序;2,判断网络类型,针对特定的数据
2018-01-31 16:25:23
349
原创 android关于UI的渲染速度
优化性能一般从渲染,运算与内存,电量三个方面进行,今天开始说聊一聊Android的渲染机制,我们要知道Android系统每隔16ms就重新绘制一次Activity,也就是说,我们的应用必须在16ms内完成屏幕刷新的全部逻辑操作,即每一帧只能停留16ms,渲染机制说完之后,然后在说如何去优化UI。1,为什么是16ms16ms意味着1000/60hz,相当于60fps。这是因为人眼与大脑之间的协作无...
2018-01-31 15:33:19
927
原创 python初学者(七)----装饰器基础
所谓装饰器,说白了,本质上就是函数,装饰其他函数,为其他函数添加新的功能装饰器的原则就是以下两点:1,不能修改被装饰的函数的代码2,不能修改被装饰函数的调用方式在说装饰器之前,我要先介绍一下高级函数和嵌套函数,因为装饰器说白了就是由高级函数和嵌套函数构成的,所以,先介绍一下他们高级函数 把一个函数名作为实参传给另一个函数,返回值中包含函数名,例如,代码如下:
2018-01-24 15:38:20
227
转载 android开发之MVP模式
我们平时开发最熟悉的模式,毋庸置疑,大家肯定都会说,MVC啊!V指的肯定是View层么,而C指的是Controller,指的一般都是Activity但是,我们要明白,有时候Controller功能Activity并不能完全代替,而是Activity和View层一起承担这Controller功能,这就有时候导致了一个控制页面中,有几千行代码,这样导致代码十分的臃肿了吧。所以,MVC模式并不太
2018-01-22 16:53:32
190
原创 android开发消息传递替换----EventBus使用
EventBus其实就是一个针对android的一款优化发布/订阅事件的总线,他的主要功能是替代Intent,Handler,BoastCast在Fragment,Activity,Service,线程之间传递消息,优点是开销小,内存占用量小,代码简介废话不多说,下面开始说EventBus的使用首先,想用这个模式,就必须下载他的依赖包,下载地址源码:https://github.com/g
2018-01-22 10:08:20
389
原创 python初学者(六)----函数
我们都知道,每一种语言,都会有函数这个玩意,因为有函数在,就可以简化代码了,不至于让代码太过于臃肿了先了解一下几种函数的类型,面向对象型的和面向过程型的函数#面向对象函数的类写法是前面写的是class,即表示的是类#面向过程的函数和函数式编程,函数的前面写的是defso,我们来说一下python的用法吧def func1(): print('in the func1')
2018-01-19 18:10:43
205
原创 android内存泄漏,内存溢出,发生的方式以及解决办法
首先,先说一下资源吧,这个资源是检测内存的工具,虽然我基本上没怎么用过,因为as自带的as的检测工具的,所以,不到迫不得已,我是不用的,但是这个工具也很不错滴https://github.com/square/leakcanary好了,言归正传,什么是内存泄漏? 内存泄漏是指当程序不再使用内存时,释放内存失败而产生的无用内存,内存泄露并不是指物理上的内存消失!怎么会导致内存泄漏?1,资源对象没有关
2018-01-19 17:14:41
529
原创 python初学者(五)----文件读取写入
今天来说一下python基础的文件的操作,我们知道,任何一门语言,肯定会有文件的操作,就像java,好多地方都会有io流的操作,现在,我们就来说一下python的一些文件流的操作 首先,要想操作文件,就必须打开文件吧?对的,那么,操作的方法如下: data = open("yesterday",encoding="utf-8").read()解释一下,data就是一个变量的形式吧,返回的信息全部存
2018-01-19 10:48:08
255
原创 python初学者(四)---键值对
这篇文章先来说一下python的键值对,即字典形式举个栗子!!!info = {'stu110':"tengxun", 'stu112':"baidu", 'stu113':"alibaba" }这就是python的键值对形式,前面为key,后面为values声明一点的是,键值对字典形式也是可以有增删改查的,下面我们就说一下字典形式的增删
2018-01-16 10:28:01
19515
4
原创 python初学者(三)-----String用法操作
今天来说一下String的一些操作吧,这些大部分都是常用操作,废话不多说了,直接上代码了,后面都有注释,你们自己一个一个的去试吧#!/user/bin/env python# -*- coding:utf-8 -*-# Author:yongzhengname = "my \tname is {name} and i am {year} old"print(name.capitali
2018-01-16 10:07:33
649
原创 python初学者(二)
今天继续说python的基础知识#pyc 为py文件编译之后的结果,跟java一样,程序在执行之前,都需要进行先编译,后执行,一次编译之后,pyc文件会一只存在,等你第二次再次运行的时候,# 会直接去找这个文件,不用第二次编译!如果py文件改变,pyc文件是否会更新?是否会执行之前编译完成的pyc文件呢?不会的!python在源代码中做了限制,# 会进行比较py文件和pyc文件的更新时间
2018-01-04 21:04:21
184
原创 python基础知识---适合初学者学习(一)
首先需要创建python环境,先到python官网https://www.python.org/downloads下载python,python适合所有平台,有window,mac,linux等的系统,所以,选择你合适下载安装,当然傻瓜式安装,你就点确定就行了。当然,linux和mac的安装之后,就可以用了,但是window的不可以,你需要跟java一样,在需要进行path路径的配置安
2018-01-03 18:37:45
375
原创 ScrollIndicatorView自定义控件---类似于页签
这是一个自定义的viewPaager,省去了很多繁琐的步骤,可以直接使用这个自定义代码来实现页签的效果,也可以实现viewPager滑动的效果/** * @version 1.0 主要用于多个tab可以进行滑动 * @author试着飞 * @date 2014年11月1日 */public class ScrollIndicatorView extends HorizontalScro
2016-02-16 17:35:00
3336
原创 导航栏自定义控件
每一个app都会有底部导航栏,那么就写一个自定义控件,每次用的时候,直接拿过来用就行了,不需要每次都要去写了public class NavigationTabView extends LinearLayout { private ImageView iv_tab_icon; public TextView iv_tab_desc; public TextView tv
2016-02-16 17:21:00
539
转载 Android高仿UC浏览器和360手机卫士消息常驻栏(通知栏)
之前网上看了下自定义消息栏,通知栏,了解到了Notification这个控件,发现UC浏览器等都是这种类型,今天写个demo实现下,如图:其中每个按钮都有不同的功能,代码如下:[java] view plain copypackage com.example.textwsjdemo; import andro
2016-02-16 17:03:47
946
转载 ios网络访问框架
MKNetWorkKit是由一个印度小伙子写的,是用于网络请求的库,支持ARC,代码的网址这里给出。作者源码地址(MugunthKumar):https://github.com/MugunthKumar/MKNetworkKit作者关于类库介绍的地址(MugunthKumar):http://blog.mugunthkumar.com/products/ios-framework
2016-02-02 16:21:38
471
原创 Volley的二次封装
也谈Volley的二次封装,有需要的朋友可以参考下。产品中使用Volley框架已有多时,本身已有良好封装的Volley确实给程序开发带来了很多便利与快捷。但随着产品功能的不断增加,服务器接口的不断复杂化,直接使用Volley原生的JSONObjectRequest已经导致Activity或Fragment层中耦合了大量的数据解析代码,同时当多处调用同一接口时,类似的数据解析代码还不可复
2015-11-19 15:48:00
440
转载 Android5.0(lollipop)新特性介绍(一)
今年6月的Google I/O大会上,Android L的初次见面我相信让会让很多android粉丝有些小激动和小期待,当然作为开发者的我来说,激动不言而喻,毕竟这是自08年以来改变最大的一个版本。新的设计语言(Material Design),5000多个新增api。废话不多说,今天要说的基本都是在Android5.0中很常见,也算是对自己学习的一种记录。1.CardView顾名
2015-11-19 15:19:56
644
Gallery 遥控器焦点控制流程以及代码实现
2019-11-04
网络访问demo
2016-02-18
android 5.0 Material Design示例
2015-11-19
SwitchButton开关选择器
2015-07-18
android二维码扫描,选择本地图片,闪光灯功能,模仿微信支付宝扫描
2015-06-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人