自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(50)
  • 资源 (1)
  • 收藏
  • 关注

原创 Android应用程序的编译和打包

Android系统的APK应用程序可以有以下几种编译方式借助系统编译:利用Android.mk 文件将众多小项目组织起来借助IDE编译:AndroidStudio命令行编译 : 比如利用gradle脚本编译APK应用。

2024-02-05 15:32:39 1067

原创 Android系统-应用程序中的View框架

源码分析基于Android 7应用程序中的View框架如图所示。

2024-02-02 00:48:24 479

原创 GUI系统--SurfaceFlinger

GUI即是图形用户界面,可以说任何操作系统中都占据非常重要的位置,因为它是用户对操作系统最直接的感官体验。一款优秀的图形界面系统至少满足以下几个条件。流畅性 :评判GUI系统重要准则之一。友好性:GUI直接面向用户,操作友好直接影响用户体验。可拓展性 :意味着用户或者开发者可以在原来基础上延伸,添加新的界面和交互方式。因为Android的GUI系统是基于OpenGL/EGL来实现的,所以掌握一定OpenGL基础只是对于分析Android系统源码会有帮助。

2024-01-28 01:30:20 777

原创 管理Activity和组件运行状态的系统进程--ActivityManagerService(AMS)

AMS是Android提供的一个用于管理Activity(和其他组件)运行状态的系统进程,也是我们编写APK应用程序时使用的最频繁的一个系统服务。AMS是寄存于systemServer中的。它会在系统启动时,创建一个线程来循环处理客户的请求。Android 10系统的AMS通过引入活动隔离、后台启动限制、活动栈管理、系统级活动和后台服务限制等功能,提高了系统的性能、安全性和资源管理能力。这些改进使得应用程序在Android 10上更加稳定、高效,并提供了更好的用户体验。

2024-01-27 08:58:09 562

原创 Linux程序设计:套接字

socket函数对应于普通文件的打开操作。普通文件的打开操作返回一个文件描述字,而socket()用于创建一个socket描述符(socket descriptor),它唯一标识一个socket。这个socket描述字跟文件描述字一样,后续的操作都有用到它,把它作为参数,通过它来进行一些读写操作。Linux套接字(Socket)是在操作系统中用于进程间通信的机制。

2024-01-23 16:46:51 361

原创 Linux程序设计: 信号量、共享内存和消息队列

Linux内核,信号量、共享内存和消息队列。

2024-01-23 14:44:56 380

原创 Linux程序设计:管道

什么是管道: 当从一个进程链接数据流到另一个ie进程时,我们使用术语管道。传递数据的方法使用popen和pclose函数。在不相关直接交换数据,需要命名管道。第一个字符是P开头就表示是管道。负责标准输入和标准输出。将输出送往popen。

2024-01-23 14:27:49 695

原创 Linux程序设计:POSIX线程

线程调度 sched_get_priority_max 和sched_get_priority_min 这两个函数来查找可用的优先级级别。线程终止函数 : int pthread_setcancelstate(int state , int * oldstate);新创建的线程与创建者共享全局变量、文件描述符号、信号处理函数和当前目录状态。如何开启进程,开启线程。线程是一个进程内部的一个控制序列。创建线程要比创建进程代价要小。让程序看起来同时在做两件事情。多线程i调试要比较苦难。

2024-01-23 13:52:58 361

原创 Linux程序设计:进程和信号

僵尸进程: 子进程终止时,与父进程的关联还会保持,直到父进程也正常终止或父进程调用wait才告结束。虽然子进程不再运行,但它依然存在于系统中,因为它的推出码还需要保存起来,以备父进程今后的wait调用使用。1的进程号为init进程预留,init进程负责管理其它进程。进程表就像一个数据结构,把当前加载在内存中的所有进程的有关信息保存在一个表中,其中包括进程的PID、进程的状态、命令字符和其他一些ps命令输出的各类信息。exec函数可以把当前进程替换为一个新进程,新进程由path或file参数指定。

2024-01-23 11:56:55 778

原创 Linux程序设计:make命令和makefile文件

在makefile文件中增加一个cleani选项来删除不需要的目标文件爱你,增加install选项来将编译成功的应用程序安装到另一个目录下。第二条规则告诉它用ar命令将新的目标文件添加到函数库中。要增加一个新的后缀规则,首先要在makefile文件中增加一行语句,告诉make命令这个新的后缀名。大型项目有时候需要构建一个函数库的几个文件从主文件分离出来。告诉make命令要执行那个文件作为makefile文件。当前目标所依赖的文件列表中比当前目标文件还要新的文件。不包括后缀名的当前依赖文件的名字。

2024-01-23 11:51:13 339

原创 Android系统启动-zygote启动分析

Zygote这个词的字面意思是“受精卵”,因而可以孕育出一个新生命。正如其所示Android中大多数应用进程和系统进程都是Zygote来生成的。那么Zygote是如何启动的,也是由init解析rc脚本时启动。

2024-01-23 10:42:28 857

原创 JNI数据类型

JNI类型

2024-01-22 22:52:04 347

原创 常用的排序算法

按照冒泡排序的思想,把相邻的元素两两比较,当一个元素大于右侧相邻元素时候,交互他们位置当一个元素小于或者等于右侧相邻元素时候,位置不变。相应代码实现:这是典型的冒泡写法,使用双循环进行排序。外层循环控制所有的回合,内部循环实现每一轮的冒泡处理,先比较在决定是否交换。举例说明: int array[] = {3,4,2,1,5,7,6};那么外层循环第一轮比较图示:那么可以得到外层循环完毕我们就可以得到一个有序的元素数组啦。由于每一轮排序都会遍历所有的元素,假设有n轮。

2024-01-17 14:28:51 997 2

原创 算法的概述

在计算机领域,算法是一系列程序指令,用于处理特定的运算和逻辑的问题。算法中的指令描述的是一个计算,当其运行时能从一个初始状态和(可能为空的)初始输入开始,经过一系列有限而清晰定义的状态,最终产生输出并停止于一个终态。一个状态到另一个状态的转移不一定是确定的。随机化算法在内的一些算法,包含了一些随机输入。算法的有穷性是指算法必须能在执行有限个步骤之后终止;算法的每一步骤必须有确切的定义;一个算法有0个或多个输入,以刻画运算对象的初始情况,所谓0个输入是指算法本身定出了初始条件;

2023-09-13 01:02:10 243

原创 Android的Handler消息通信详解

我们得出Handler消息机制其实就是一个典型的生产者-消费者模型。可以用一张图,来表示整个消息机制1. Handler通过sendMessage()发送Message到MessageQueue队列;2. Looper通过loop(),不断提取出达到触发条件的Message,并将Message交给target来处理;3. 经过dispatchMessage()后,交回给Handler的handleMessage()来进行相应地处理。

2023-08-02 16:33:09 795

原创 Android的内存泄漏分析

内存溢出: 指程序在申请内存时,没有足够的内存空间供其使用,出现out of memoryAndroid系统为每个应用程序申请到的内存有限,一般为64M或者128M等,我们可以在清单文件中进行配置,android:largeheap = "true" 从而给APP申请更大的内存空间;给APP申请更大的内存空间。 内存溢出又分为 : 堆内存溢出, 栈内溢出。 虚拟机: JVM的作用是把平台无关的.class里面的字节码翻译成平台相关的机器码,来实现跨平台。Dalvik和Art就是安卓中使用的虚拟机。项目

2023-07-12 14:03:23 1254

原创 二叉树的简单遍历

二叉树的遍历

2023-07-12 01:11:20 175

原创 Android系统启动流程分析

当按下Android系统的开机电源按键时候,硬件会触发引导芯片,执行预定义的代码,然后加载引导程序(BootLoader)到RAM,Bootloader是Android系统起来前第一个程序,主要用来拉起Android系统程序,Android系统被拉起首先肯定会启动Linux内核。备注:我们再刷机时候,经常看到工具软件会让我们切换bootloader/loader模式,其实就是重新激活bootloader程序,然后再拷贝新的镜像文件重新刷机,就是通过这个程序重新初始化硬件设备,建立内存空间映射。

2023-07-11 23:49:11 12379 5

原创 Android Binder进程间通讯原理分析

Android系统是基于Linux内核开发的。Linux开发提供了丰富的进程间通讯机制,例如管道、信号、消息队列、共享内存、插口(Socket)。而Binder是一套新的通讯工具。Binder通信采用了c/s架构,所以我们包含了 Client,Server,ServiceManager以及binder驱动,其中ServiceManager用于管理系统中的各种服务。注意:图片来源于网络从进程进度来看IPC机制, 每个Android的进程只能运行在质疑进程所拥有的虚拟地址空间。

2023-07-10 11:42:01 214

原创 Android AIDL基本使用

功能实现,由客户端发送数据过来,简单保存一下aString。客户端还必须拥有接口类的访问权限,因此如果客户端和服务在不同应用内,则客户端应用的。这样server端服务已经开发好了,只需要在Activity把这个服务启动即可。因为我们给server端记上了权限,那么客户端需要把对应权限加上。文件,使用 Java 编程语言生成接口。接口,进而为客户端提供 AIDL 方法的访问权限)的副本。类并实现 AIDL 接口中的方法。--加上服务权限 -->此文件定义带有方法签名的编程接口。的内部抽象类,用于扩展。

2023-07-06 11:50:50 1079 1

原创 第十三章:项目相关方管理

识别相关方式定期识别项目相关方,分析和记录他们的利益、参与度、相互依赖性、影响力和对项目成功的潜在影响的过程。主要作用是使团队能够建立对每个相关方或相关方群体的适度关注。1.项目章程2.商业文件3.项目管理文件4.项目文件5.协议6.事业环境因素7.组织过程资产1.专家与判断2.数据收集3.数据分析4.数据表现5.会议1.相关方登记册2.变更请求3.项目管理计划更新4.项目文件更新。

2022-11-19 21:41:49 685

原创 第十二章: 项目采购管理

记录项目采购决策、明确采购方法,及识别潜在卖方的过程。主要作用是确定是否从项目外部获取货物和服务,如果是,则还要确定将在什么时间、以什么方式获取的什么货物和服务。货物和服务可从执行组织的其他部门采购,或者从外部渠道采购。1.项目章程2.商业文件3.项目管理计划4.项目文件5.事业环境因素6.组织过程资产 1. 专家判断2.数据收集3.数据分析4.供方选择分析5.会议 1.采购管理计划2.采购策略3.招标文件4.采购工作说明书5.供方选择标准6.自制或外购决策7.独立成本估算8.变更请求9.项目文件更新 10

2022-11-19 21:41:47 799 1

原创 第十一章:项目风险管理

定义如何实施项目风险管理活动的过程。主要作用,确保风险管理水平、方法和可见度与项目风险的程度,以及项目对组织和其他相关方的重要程度相匹配。1.项目章程2.项目管理计划3.项目文件4.事业环境因素5.组织过程资产1. 专家判断2.数据分析3.会议项目风险管理旨在利用或加强正面风险,规避或减轻负面风险。未妥善管理的威胁可能引发各种问题,如工期延误、成本超支、绩效不佳或声誉受损。

2022-11-19 21:41:03 807 1

原创 第八章: 项目质量管理

识别项目及其可交付成果的质量要求和标准,并书面描述项目将如何证明符合质量要求和标准的过程。主要作用为整个项目期间如何管理和核实质量提供指南和方向。1.项目章程2.项目管理计划3.项目文件4.事业环境因素5.组织过程资产 1.专家判断2.数据收集3.数据分析4.决策5.数据表现6.测试与检查规划7.会议1.质量管理计划2.质量测量指标3.项目管理计划更新4.项目文件更新用来估算备选方案优势和劣势的财务分析工作,以确定可以创造最佳效益的备选方案。成本效益分析可帮助项目经理确定规划的质量活动是否具有成本有效性。达

2022-11-17 08:38:42 689

原创 第九章: 项目资源管理

定义如何估算、获取、管理和利用实物以及团队项目资源的过程。1.项目章程2.项目管理计划3.项目文件4.事业环境因素5.组织过程资产1.专家判断2.数据表现3.组织理论4.会议1.资源管理计划2.团队章程3.项目文件更新。

2022-11-17 08:37:44 110

原创 第七章:项目成本管理

确定如何估算、预算、管理、监督和控制项目成本的过程。主要作用是在整个项目期间为如何管理项目成本提供指南和反向。1.项目章程2.项目管理文件3.事业环境因素4.组织过程资产1.专家判断2.数据分析3.会议。

2022-11-17 08:37:01 1152 1

原创 第六章: 项目进度管理

为规划、编制、管理、执行和控制项目进度而制定政策、程序和文档的过程。主要作用是为如何在整个项目期间管理项目进度提供指南和方向。1.项目章程2.项目管理计划3.事业环境因素4.组织过程资产1.专家判断2.数据分析3.会议进度管理计划是项目管理计划的组成部分,为编制、监督和控制项目进度建立准则和明确活动。根据项目需要,进度管理计划可以是正式或非正式的,非常详细或高度概况的,其中应包括核实的控制临界值 。进度管理计划规定 :需要规定用于制定项目进度模型的进度规划方法论和工具。使用适用型生命周期时,应指定固定时间的

2022-11-17 08:36:04 1183

原创 第五章: 项目范围管理

为记录如何定义,确认和控制项目范围及产品范围,而创建范围管理计划的过程。主要作用,在整个项目期间对如何管理范围提供指南和方向。1.项目章程2.项目管理计划3.事业环境因素4.组织过程资产 1.专家判断2.数据分析3.会议1.范围管理计划2.需求管理计划 范围管理计划是项目管理计划的组成部分,描述将如何定义、制定、监督、控制和确认项目范围。做出如下规定:根据项目需要,范围管理计划可以是正式的或非正式的,非常详细或高度概况的。描述将如何分析、记录和管理项目和产品需求。也称为商业分析计划 。主要内容包括:如何规划

2022-11-16 17:03:11 479

原创 第四章:项目整合管理

项目整合管理包括对隶属于项目管理过程组的各种过程和项目管理活动进行识别、定义、组合、统一和协调的各个过程。

2022-11-16 09:19:38 444

原创 Kotlin集合的函数式API

1. 基础filter和map使用filter函数遍历集合并选出应用给定的lambda后返回true的那些元素例子:val list = listOf(1,2,3,4,5,6,7,8,9)// 只保留偶数 println(list.filter { it % 2 == 0 }) // 打印的到: [2, 4, 6, 8]map函数对集合中的每一个元素应用给定的函数并把结果收集到一个新的集合。例如把数字列表变成平法列表val list = listOf(1,2,3,4)..

2021-08-18 00:32:40 290

转载 Android安装APK详解

转载自:http://cstsinghua.github.io/2016/06/13/Android安装APK详解/Android安装APK详解    引言众所周知,Android应用最终是打包成.apk格式(其实就是一个压缩包),然后安装至手机并运行的。APK即Android Package的缩写,那么,Android安装应用APK的具体方式及其详细过程是

2017-06-16 17:25:52 8073

翻译 Android 接口定义语言 (AIDL)

Android 接口定义语言 (AIDL)AIDL(Android 接口定义语言)与您可能使用过的其他 IDL 类似。 您可以利用它定义客户端与服务使用进程间通信 (IPC) 进行相互通信时都认可的编程接口。 在 Android 上,一个进程通常无法访问另一个进程的内存。 尽管如此,进程需要将其对象分解成操作系统能够识别的原语,并将对象编组成跨越边界的对象。 编写执行这一编组操作的代码

2017-06-13 09:07:01 446

原创 Android.mk

概览Android.mk 文件位于项目 jni/ 目录的子目录中,用于向构建系统描述源文件和共享库。 它实际上是构建系统解析一次或多次的微小 GNU makefile 片段。 Android.mk 文件用于定义 Application.mk、构建系统和环境变量所未定义的项目范围设置。 它还可替换特定模块的项目范围设置。Android.mk 的语法用于将源文件分组为模块。 模

2017-04-16 22:58:32 852

原创 GreenDao2 配置混淆错误解决

配置了混淆后已启动App,就直接Cash。log信息报如下错误:Caused by: java.lang.NoSuchFieldException: TABLENAME检查了proguard-rules文件并且按照官方给出方法去配置混淆规则23456789101112

2017-03-22 16:44:29 2750 1

转载 Android Studio导入Android源码

Android Studio导入android源码android源码编译官方指南清华大学TUNA镜像源预备工作根据android源码编译官方指南完成在Ubuntu或者Mac上的部署,由于网络原因,需要TUNA提供的初始化包(压缩包大约24G),后续只要执行repo sync同步源码树即可。向导默认初始化的是最新版Android系统的Master分支,如果后续想切换分支的话,

2017-02-28 23:06:42 969

转载 浅谈谷歌全新设计理念Material design

本文转自:http://www.androidchina.net/1213.html在今年的谷歌I/O开发者大会上,谷歌设计部门副总裁马提亚斯·杜亚特向世界各地的开发者们展示了其全新的设计语言Material Design。这个设计在Android 5.0 中首次亮相。率先搭载Lollipop的设备分别是Nexus 6智能手机和Nexus 9平板电脑,这两款设备在上个月月初亮相,而这预示着

2017-01-24 16:08:10 910 1

转载 最流行的Android组件大全

本文转自:http://blog.csdn.net/qq_16131393/article/details/51465538最流行的Android组件大全 http://www.open-open.com/lib/view/open1409108030307.htmlAndroid开源项目分类汇总 http://www.open-open.com/lib/view/open

2017-01-19 00:07:07 1221

转载 从零开始成为一名开源程序员,其实只需要九步!

探索技术世界,是一件非常令人兴奋的事情。你会发现有非常非常多的领域,等待你去学习,去深挖。如果有兴趣参与和帮助创造更好的功能,加入到开源的队伍当中,你知道要从哪里开始吗?第一步该做什么?第二十步又是什么?首先要明白,开源是开放的。这听起来似乎是句废话,但现实中有很多人恰恰就忘记它只是一个文化现象的描述,而不是一家500强公司的名字。不需要去面试或完成注册表或注册表单才能成为开源程序员。只需要做

2017-01-17 22:31:07 458

转载 Android自动化测试

1、Monkey是Android SDK自带的测试工具,在测试过程中会向系统发送伪随机的用户事件流,如按键输入、触摸屏输入、手势输入等),实现对正在开发的应用程序进行压力测试,也有日志输出。实际上该工具只能做程序做一些压力测试,由于测试事件和数据都是随机的,不能自定义,所以有很大的局限性。2、MonkeyRunner也是Android SDK提供的测试工具。严格意义上来说MonkeyR

2017-01-16 23:10:55 719

原创 Git上传代码到OSChina仓库问题

git上传本地项目到oschina仓库,以及SSH公钥的生成配置。

2017-01-16 13:34:59 777

公众号二维码图片

公众号二维码图片

2017-01-12

空空如也

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

TA关注的人

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