自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(53)
  • 收藏
  • 关注

原创 Ubunut 18.04 apt-get 连接异常处理

现场大陆的用户经常会用到一些工具去上互联网,但是也带来一些问题,比如就是说proxy相关的网络连接问题,今天就又遇见了,准备安装软件,结果发生,Could not connect to 127.0.0.1:8889 (127.0.0.1). - connect (111: Connection refused)一开始没细看,以为是软件源的问题,就先更新了一波软件源,但是仍然有问题,这就让我联想到我之前使用过q2ray,后来因为一些原因给删了,曾经设置proxy,大概确认是这个导致的.解决直接

2021-08-03 15:38:16 406

原创 Android_动态广播源码分析

追一追动态广播的源码 恩恩。今天我们追一追动态广播的源码,看看我们平时使用的动态广播是怎样实现的:(现在网上资料一大堆,其他内容就不多赘述,主要从源码层面来分析);动态广播的注册:【注册广播的一方为接受广播的一方】registerReceiver( receiver,filter);一般情况下动态广播需要在代码里面注册,而注册的代码就是上面的一行,这段代码...

2020-06-04 18:55:32 360

原创 AndroidP_应用进程启动流程的梳理

前言本来是要将之前Activity冷启动流程继续梳理清楚的,到了中间看到当进程尚未启动还需要启动新的进程,这也是需要梳理清楚的,于是就先将进程启动流程在源码层面给梳理一遍.流程图先上图,有个概况了解才能有梳理的方向:源码建议在进入源码阅读之前,先将上面的流程图大概的进行两遍左右的阅读,然后相信会对下面的源码梳理的理解有很大的帮助:1. AMS.startProcess我们在开发中中应该知道,应用进程的管理通常是由AMS来进行的,但是进程的启动也是由AMS来发起的【虽然是AMS发起的,但是创建

2020-06-04 18:45:03 588

原创 AndroidP_Zygote进程源码梳理从认识到理解

前言还是来看看,Zygote进程吧,这个和日常开发的关系还是很紧密的,我们今天对它的创建,启动和工作的方面对Zygote进程来梳理一下:怎么理解Zygotezygote,硬翻过来是受精卵的意思, 我们先大概的认识下:zygote进程是由init进程创建的;init管理zygote的生命周期;系统中大部分应用进程是从zygote直接或者间接创建的;zygote进程在Android系统的全生命周期都是存活的,守护并管理这他的子孙;基于上面的总体映像.我们到到代码中去看看:代码梳理1. 程序

2020-06-04 18:41:56 210

原创 Android_MediaScanner源码梳理

MediaScanner我们的手机或者

2020-04-26 14:36:29 439

原创 ADB(八)_WiFi连接(host端和设备端通过TCP连接的过程分析)

struct stinfo { const char* service_name; // 字符串:"connect" void (*func)(int fd, void* cookie); //函数指针 int fd; // s[1]; void* cookie; //连接的目标IP。eg:192.168.0.4};int fd = ...

2020-03-03 13:50:41 1186

原创 ADB(七)_USB连接 (ABD通过USB连接的流程分析)

首先,我们知道,开发中在使用ADB的时经常使用的是USB连接Android开发设备。我们今天就组要对USB通信进行分析;不过我们不会对USB本身的协议、原理、实现等方面进行说明,那些不在我们讨论的范围内,我们只是就USB通信在ADB的的使用进行源代码层面的梳理。我们的USB通信是连接host端的adb程序和Android端的adbd程序,所以我们需要分别对adb 和adbd 的运行过程有所了解,...

2020-03-02 13:57:33 6656

原创 ADB(六)_调试ADB(ADB设置自身日志的代码梳理和设置ADB自身日志可见)

前言是的,标题很迷,这要是在我没接触ADB之前,我要是看到这样的标题肯定想:“要不是起错了标题那怕不是石乐志了吧”。没错。我们确实要使用Android的ADB来调试ADB。首先,我们知道ADB是间接调用并向开发人员输出log【日志】信息来对Android进行调试的,在Android中有log这么个类,它是专门用来对我们开发人员或者系统自带的log进行处理;我们就可以在ADB模块的修改和优化上...

2020-02-26 10:01:09 3282 1

原创 ADB(五)_host端adb server相关的代码梳理

前言前文ADB(一)_概况了解ADB(二)_ADBD_main()函数代码梳理ADB(三)_ADBD_adbd_main()函数代码梳理ADB(四)_host端的代码梳理在前一篇的文章中,我们对ADB在host端上的运行的代码进行了一个简单的梳理,一篇文章肯定是不能把host端的ADB讲清楚,所以只是以“adb root”命令的执行情况来进行简单的梳理,其中涉及的其他内容就不能深入。那...

2020-02-25 15:28:56 1846

原创 ADB(四)_host端的启动流程代码梳理

前言前文ADB(一)_概况了解ADB(二)_ADBD_main()函数代码梳理ADB(三)_ADBD_adbd_main()函数代码梳理1. adb的代码前面我们对ABD的adbd部分整个进行了一个大概的梳理,具体可以参考上面给出的链接;今天我们就针对ADB在host端的adb进行源码的梳理,看看host端的adb是怎么工作的. 这里为了叙述方便,将在host端的adb 统称为ad...

2020-02-24 09:45:31 1967

原创 Linux C/C++_errno的使用

前言之前在Android的开发中,调试代码可以使用logcat,很是方便,但在一般的Linux C/C++开发中,就是用不上logcat了,不过我们linux自身提供了相关的功能,今天就对errno进行讨论一下:它定义在errno.h 头文件中,我看有一下,在linux不同的内核版本中errno.h的具体位置调整了一下,目前我使用的是Ubuntu18.04. LTS...

2020-01-17 18:57:09 2263

原创 ADB(三)_ADBD_adbd_main()函数代码梳理

前言前面我们对ABD的adbd部分的main()方法进行大概梳理,了解到main()函数的结构和函数调用;今天我们了解adbd_main()函数是怎么工作的;1. adb_main 代码说明int adbd_main(int server_port) { //将当前进程的文件创建掩码设置为mask,并返回旧的创建掩码。 umask(0); // 为了避免进程退出, 可...

2020-01-15 15:53:25 2732

原创 ADB(二)_ADBD_main()函数代码梳理

前言前面我们对ADB从整体上进行了简单的概括梳理,我们对adb的了解应该比日常开发了解的更多了。现在就需要从局部对adb进行分析,了解它组成部分的具体工作原理是怎么样的,相互之间又是怎么进行交互的。ADBD (ADB daemon)在上一篇内容里我们知道adbd主要作用是连接ADB Server 和android device或者仿真器并为在开发者主机上的client提供一些服务.那我们就先...

2020-01-15 15:52:48 2219

原创 ADB(一)_概况了解

前言因为工作需要,需要对ADB进行分析分析;对adb的一般操作我们Android开发人员肯定是不陌生的。但是觉adb是怎么工作的,估计很多人了解的不多,那我们就对adb的工作原理进行一下分析。ADB的概述我一开始想的是直接从源码入手,看看ADB的源码结构是怎么样的,为此我花了大概一天的时间,从main()函数一路往下看,在函数的调用中我都不知道我想分析的是什么了,加上C/C++语言风格比较晦...

2020-01-15 15:52:13 4478 3

原创 Ubuntu18.04 安装starUML

换了主机,很多软件都的要重新安装,今天正好需要画时序图来帮助梳理代码。那就需要画时序图的软件了,Ubuntu本身并没有画时序图的软件,不过有很多第三方的软件可以供我们使用,starUML就是其中一款出现比较长,使用的比较多的画图软件,不仅时序图,还可以绘制用例图、类图、状态图、活动图、通信图、构件图、部署图以及复合结构图等,我一般只是用来在软件开发中使用starUML画时序和类...

2020-01-14 12:43:45 920 2

原创 C++_GUARDED_BY 和EXCLUDES属性字

在梳理ADB源码的时候,看到代码中函数中有大写的GUARDED_BY和EXCLUDES等字眼。一开始猜想可能是宏定的什么变量吧。但是一番检索后并没有发现有哪里定义,并且我之前都没有接触过这样的额用法。/system/core/adb/adb_listeners.cpp...static ListenerList& listener_list GUARDED_BY(listener_l...

2020-01-13 15:58:55 4340

原创 Android底层获取设备局域网IP

前言因为工作需要,我们需要处在局域网中的设备自己在底层获取IP地址,网上有很多的说法是通过WifiManager来拿到设备的局域网IP.方法虽然行得通,但是不适合我当前的场景,所以需要想别的方式。网络IP所有在网络中【广域网,城域网,局域网等等】里面的设备之间要通信就必须拥有一个能被网络识别的IP地址。私有网络 IP私有IP就是在局域网内部分配的IP地址,不能直接访问Internet ...

2020-01-13 11:32:22 912

原创 Android_IdleHandler

听到公司前辈在电话面试时给别人提了个问题:“你了解IdleHandler吗?”噫,噫,噫。我之前梳理过Handler的运行流程,没注意这个IdleHandler!!!潜意识中我感觉这个还是应该要去了解一下的;那我们今天就与源码中看看这个IdleHandler。/frameworks/base/core/java/android/os/MessageQueue.java /** ...

2019-12-12 17:19:27 275

原创 Android_onTouch onTouchEvent 与 onClick的区别和先后调用关系

我们会经常在代码中看到触屏事件的处理,有时候使用onTouch,有时候使用了onTouchEvent,还有的时候使用了onClick,那么我们有没有对这三个方法进行过思考:三者有什么区别呢?要是三者都在代码中出现,应该是怎样的调用关系呢?首先,我先把结论给出来:onTouch, onTouchEvent, onClick,三个方法的调用顺序是:onTouch ----> o...

2019-12-12 12:01:04 1525

原创 Android_UI_update(子线程更新UI的原理和源码梳理)

我们之前在Android_UIthread(UI线程原理以及和主线程的关系)中知道,UI在主线程中创建,只有主线程才能跟新UI。但是我们在实际中会经常在工作线程来更新UI,一般情况下,除了主线程,其他的线程是不可以更新UI的,此时我们就会使用到一些方法。说明Android系统中,一般情况下,不管我们在非主线程中采取哪种方式来更新UI,最后都会是在进程的主线程中来更新UI的,如果我们感觉方法的...

2019-12-11 15:11:29 482

原创 Android_UIthread(UI线程原理以及和主线程的关系)

originally added here at android.view.ViewRootImpl.<init>(ViewRootImpl.java:511) at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:346) at android.view.WindowManag...

2019-12-06 03:46:04 3689

原创 BinarySearch_(二分查找)

背景今天无意中听见公司前辈说他给来公司面试的出了道二分查找的手写算法题,嗯嗯嗯,那就对这个二分查找进行简单思考。题目具体啥题目就没继续深入问了,那我自己给自己出了小题目:“给定一个元素有序分布的数组,要求查找某个的元素,如果找到返回元素下标,如果没有则返回-1,要求使用二分查找”;idea1.我首先居然不是想怎么查找,我想到的是,要是有重复元素,那怎么查找?找到那个才算是对的?...

2019-11-28 19:57:15 310

原创 Android_IntentService源码梳理

IntentService是Android提供和的一个抽象类.按需处理异步请求,客户端发送请求通过startService(intent)调用,这个服务根据需要被启动,使用工作线程来处理每个Intent,并在处理完任务后停止自身.以上就是google对IntentService的简短介绍【我翻译的】.那我们今天就从源码的角度对IntentService进行梳理:首先我们已知IntentSe...

2019-11-28 17:13:28 189

原创 Android_HandlerThread 源码梳理

Android 多线程还有HandleThread,看名字就可以能感觉到得到,会是handler和Thread的综合使用。那到底什么怎么样的呢,就跟随Android的源码来看看他的工作原理是什么样的。我们先看看他的类注解:先看看官方对他的介绍:【Handyclassforstartinganewthreadthathasalooper.Theloopercanth...

2019-11-27 17:08:04 216

原创 Android_AsyncTask源码梳理

Android中的多线程操作是比比皆是,之前有对线程间通信方式的Handler进行源码梳理,今天就对AsyncTask的工作原理进行源码分析:准备AsyncTask背后的实现原理也是基于Handler和Thread的,只不过Android给我们做了很好的封装,我们可以直接拿来使用.首先,我们都知道AsyncTask有三个主要的泛型参数:Params : 在执行AsyncTask时下...

2019-11-25 15:24:01 165

原创 Queue_使用栈来实现队列功能

之前同事给我讲的那个逆序输出数组的问题时,我还想过使用栈的先进后出特性来实现,但是稍微再想想还是不要了,根据数组本身就可以实现,使用栈就显得很多余了。栈先进后出的特性,要是稍加利用,也是可以实现先进先出的队列的效果。Idea使用两个栈来实现先进先出的存储特性使用栈暂存再取出的话,就是先进后出,顺序就颠倒过来,那如果再用一个栈来转存一下,不又是把颠倒的顺序载颠倒了一会,最后的结果就是和...

2019-11-23 22:00:12 257

原创 inversed_(翻转数组)

背景:听同事说他面试时被给了个手写算法题“给你一个数组,将它逆序输出”ieda好像不用idea,从头到尾输出就是正序的,那么从未到头输出过来不就是逆序的了。叭叭叭,就上代码#include <iostream>using namespace std;int main() { int arr[] = {1, 2, 3, 4, 5, 6, 7, 8...

2019-11-21 18:20:02 261

原创 Android_ThreadLoacl原理

先看看google的定义对ThreadLocal 有个大概了解,再进行源码的梳理:This class provides thread-local variables. These variables differ from their normal counterparts in that each thread that accesses one (via itsgetorsetm...

2019-11-20 20:21:08 135

原创 查找_找出数组中最大的两个数

题目是这样的:"给定一个数组,输出数组和中的最大的两个数(手写)"idea要想找到数组中的极值(本例中要求最大值);是需要把所有的值都遍历过,至于遍历几遍就看怎么遍历了。针对本例中的找出最大的两个数时,我一开始的想法就是两次for循环,一次循环找出数组中的最大值,下一次循环找出数组中的次大值;叭叭叭就上代码int* find(int arr[], int length) { ...

2019-11-20 17:19:33 3931 5

原创 Android 的Handler工作流程梳理

之前在子线程和主线程创建使用Handler不同处的源码分析时,追了一下应用创建和使用Handler的相关源码。发现了在线程中使用Handler,最后就会进入loop循环,子线程要手动退出,主线程是不死就不退出;同时也和另一个问题相遇了:那就是应用的主线程最后也都在loop里没出来【activityThread的Main方法最后执行了Looper.loop()】为什么不会导致应用发生ANR呢?.今天...

2019-10-30 19:58:39 312

原创 子线程和主线程创建使用Handler不同处的源码分析

子线程的Handler在使用handler时,会有在子线程创建handler的场景,那我们从Looper.java的源码中摘抄下面一段创建Hander的代码段: class LooperThread extends Thread { public Handler mHandler; public void run() { Looper.prepare...

2019-10-29 19:22:35 734

原创 Android_activity 初始化流程分析(未完待续)

Activity是什么Activity是一个Android应用程序组件(也是Android四大组件之一,其他为Service,BroadcastReceive,content provider)Activity主要用于显示的,用户可与其提供的屏幕进行交互,以执行拨打电话、拍摄照片、发送电子邮件或查看地图等操作。 每个 Activity 都会获得一个用于绘制其用户界面的窗口当我们需要启动一个应用...

2019-10-28 10:39:57 484

原创 Activity setContentView主要流程

我们一般在写一个Activity的时候都会有在onCreate()方法中看到这么一个方法:setContentView(),今天就以setContentView()方法开始看看这经常出现的代码端是干什么的:1setContentView@Overrideprotected void onCreate(Bundle savedInstanceState) { ... ...

2019-10-27 23:29:34 221

原创 Android_activity事件分发流程分析

今天来看一下Activity的事件分发过程:事件分发 用户通过屏幕与手机交互的时候,每一次点击,长按,移动等都是一个事件; 事件分发机制:某一个事件从屏幕传递各个View,由View来使用这个事件(消费事件)或者忽略这个事件(不消费事件),这整个过程的控制。 事件的分发的对象是谁 系统将事件封装成一个MotionEvent对象,事件分发的过程就是MotionEv...

2019-10-24 22:49:31 334

原创 Android_Servicemanager的启动流程分析

之前在SeystemService的使用中有讲到ServiceManager的作用:查找获取和注册添加系统服务,但是由于那篇文章主要是梳理SystemService的使用,就没有对ServiceManager其他方面进行梳理.今天对ServiceManager的相关源码进行梳理;Servicemanager的启动流程我们从以下几个方面对Servicemanager的启动进行分析启动进程...

2019-10-19 23:32:41 677

原创 Android_SystemService(使用系统服务)

系统服务主要关注以下几个方面:如何使用系统服务 系统服务的发布 系统服务的注册原理先画个图表来简单的概括一下Android系统利用ServiceManager来统一管理系统服务;这样对于service端来说,只要将自身注册到Servicemanager中,就可以安心等待被调用,对于client端来说,需要调用某个服务时,只要在Servicemanager来查询是否有所需的服务...

2019-10-18 15:53:39 729

原创 SelectSort(选择排序)

先上图,看图比较容易理解:第一遍选择过程:第二遍选择过程:选择全过程:过程分析 SelectSort首先在未排序数组部分中找到极值(最小/大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。【思路比较简单,看上面的演示或者下面代码就能够很好的理解了^_^】代码实现(...

2019-10-15 19:48:05 1151

原创 InsertSort(插入排序)

先上图,看图比较容易理解:过程分析1.选择一个元素构建一个已排好序的数组,这里为了方便选择第一个元素,(此例中黄色区域为以排好序的数组 )2.然后让未排序部分的第一个元素k与已排好序中最后一个元素sorted[i]开始比较大小: 1).如果k >= sorted[i] , k加入到已排序数组后面。 2).如果k < sorted[i] , k继...

2019-10-12 17:24:03 665

原创 BubbleSort(冒泡排序)

先上图,看图比较容易理解:( 一次 冒泡步骤演示)过程分析每次进行一次冒泡排序。会得到一个数组中的极值(最大或最小),这里就拿最大值来说,顺序是从前往后:1.首先第一个数组元素和第二个数组元素比较大小,假如第二个元素小于第一个元素,则交换两者位置,然后第二个元素和第三个元素比较交换,依次进行下去。知道倒数第二个元素和倒数第一个元素进行比较交换。(看演示图加深理解)2.第二次冒...

2019-10-12 13:44:33 278

原创 MergeSort(合并排序)

mergeSort的关键是 merge。但是一个数组怎么来merge?所以,它是分两步走的,首先它要把所给的数组分割开来,然后对分割开来的子数组进行合并。之前我们讲过快排也要分割数组,但是这里的分割数组相对简单。重点是如何将分割开来的数组合并起来先上图,看图比较容易理解:MergeSort过程分析经过我们的演示可以发现,我们的合并是沿着当初分割的原路合并的,在合并的时候将元素的大...

2019-10-11 18:59:08 8721 7

空空如也

空空如也

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

TA关注的人

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