自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(137)
  • 资源 (6)
  • 收藏
  • 关注

原创 如何分析android进程被杀问题

查看进程被杀的3个步骤1.确定被杀进程的包名有人给出直接用百度搜索app对应的包名2.确定进程被杀的精确时间点有进程被杀时间点及原因包名,则直接用log中搜索正则表达式(gedit支持正则)am_proc_died: [0,[0-9]*,xxxx,,xxxx代表包名 ,拿到这行log的时间点以及进程pideg: 08-19 10:06:55.302 1000 1699 12137 I am_proc_died: [0,9307,com.quark.browser,905,11]如上栗

2022-04-05 21:38:39 310

原创 Android开发知识体系总章

FlutterFlutter常见插件 用了这个插件后,Flutter开发更简单了!Java基础 Java Object类方法 HashMap原理,Hash冲突,并发集合,线程安全集合及实现原理 HashMap 和 HashTable 区别 HashCode 作用,如何重载hashCode方法 ArrayList与LinkList区别与联系 Java反射机制 Java代理模式及三种方式 Java泛型 Synchron

2022-04-05 09:52:31 120

原创 android中的EventLog

调试分析Android时,经常需要查看EventLog,了解当前Activity状态和window的信息等等。本文就列举以下am相关的tags含义。 本文涉及的源码类有EventLog.java、EventLogTags.java,另外tags格式的定义位于文件/system/etc/event-log-tags。如果在终端输入:logcat -b events那么会输出大量类似这样的信息:06-01 13:44:55.518 7361 8289 I am_create...

2022-04-03 19:00:28 622

原创 Linux 内核空间与用户空间

内核空间和用户空间 对 32 位操作系统而言,它的寻址空间(虚拟地址空间,或叫线性地址空间)为 4G(2的32次方)。也就是说一个进程的最大地址空间为 4G。操作系统的核心是内核(kernel),它独立于普通的应用程序,可以访问受保护的内存空间,也有访问底层硬件设备的所有权限。为了保证内核的安全,现在的操作系统一般都强制用户进程不能直接操作内核。具体的实现方式基本都是由操作系统将虚拟地址空间划分为两部分,一部分为内核空间,另一部分为用户空间。针对 Linux 操作系统而言,最高的 1G 字节(从虚拟地址

2022-03-27 19:30:43 561

原创 解析ViewRootImpl

一、View 通过 ViewRootImpl 来绘制 ViewRootImpl 是一个视图层次结构的顶部,在上一篇文章中我们知道了 ViewRootImpl 实现了 View 与 WindowManager 之间所需要的协议,作为 WindowManagerGlobal 中大部分的内部实现。这个好理解,在 WindowManagerGlobal 中实现方法中,都可以见到 ViewRootImpl,也就说 WindowManagerGlobal 方法最后还是调用到了 ViewRootIm...

2022-03-19 18:41:27 891

原创 Java虚拟机(深度)

1. Java 内存区域与内存溢出异常1.1 运行时数据区域 根据《Java 虚拟机规范(Java SE 7 版)》规定,Java 虚拟机所管理的内存如下图所示。1.1.1 程序计数器内存空间小,线程私有。字节码解释器工作是就是通过改变这个计数器的值来选取下一条需要执行指令的字节码指令,分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖计数器完成如果线程正在执行一个 Java 方法,这个计数器记录的是正在执行的虚拟机字节码指令的地址;如果正在执行的是 Native...

2022-03-13 20:56:30 54

原创 Linux Signal信号详解

信号是Linux编程中非常重要的部分,本文将详细介绍信号机制的基本概念、Linux对信号机制的大致实现方法、如何使用信号,以及有关信号的几个系统调用。 信号机制是进程之间相互传递消息的一种方法,信号全称为软中断信号,也有人称作软中断。从它的命名可以看出,它的实质和使用很象中断。所以,信号可以说是进程控制的一部分。

2022-03-13 19:45:04 1216

原创 Activity、Window、View 之间的关系

Activity 启动后就可看到我们写的 Layout 布局界面,Activity 从 setContentView() 到显示中间做了什么呢?下面我们就来分析下这个过程。本文主要对于以下问题进行分析:Window 是什么?Activity 与 PhoneWindow 与 DecorView 之间什么关系?

2022-03-13 16:59:58 44

原创 Tombstone文件分析

当一个动态库(native 程序)开始执行时,系统会注册一些连接到debuggerd 的signal handlers,当系统 crash 的时候,会保存一个 tombstone 文件到/data/tombstones目录下(Logcat中也会有相应的信息),文件的确就像墓碑一样记录了死亡了的进程的基本信息(例如进程的进程号,线程号),死亡的地址(在哪个地址上发生了 Crash),死亡时的现场是什么样的(记录了一系列的堆栈调用信息)等等。

2022-03-13 16:42:29 404

原创 类加载-java.lang.ClassLoader

ClassLoader是什么?Class代表它的作用对象是类,Loader代表它的功能是加载,那么ClassLoader就是把一个以.class结尾的文件以JVM能识别的存储形式加载到内存中。类加载过程一个类在被使用之前,会经历class文件生成—>加载—>连接—>初始化等阶段。这些阶段组合起来为完整的类加载过程,其中加载阶段主要完成三件事:通过类的全限定名来获取定义次类的二进制字节流将该二进制字节流定义的静态数据结构转换成方法区的运行时数据结构在内存中生成一个代表

2022-03-06 20:45:21 51

原创 谈谈ActivityStackSupervisor,ActivityStack,ActivityRecord,TaskRecord的关系

在AMS分析和activity的启动流程时候,经常碰到ActivityStackSupervisor、ActivityStack、ActivityRecord、TaskRecord,现在对它们统一梳理一下。1.简介先来张简单的关系图:

2022-03-06 19:11:05 130

原创 Alpha测试、Beta测试和验收测试的含义与区别

1、Alpha测试 Alpha测试是由用户在开发环境下进行的测试,也可以是开发机构内部的用户在模拟实际操作环境下进行的测试。开发者坐在用户旁边,这是在开发者受控的环境下进行的测试。由开发者随时记录下错误情况和使用中的问题。2、Beta测试 Beta测试是由软件的多个用户在一个或多个用户的实际使用环境下进行的测试。开发者通常不在测试现场,这是在开发者无法控制的环境下进行的测试。由用户记录下遇到的所有问题,定期向开发者报告。beta测试是一模拟真实的使用环境从而发现缺陷的一种测试...

2022-03-06 18:17:54 2212

原创 史上最全依赖注入框架Dagger介绍

一、依赖注入Dagger的作用 我想这是许多人的困惑。为什么不直接new一个对象。 而是通过配置各式各样的注解达到new的目的?看了许许多多的文章,都指向一个观点,一切是为了解耦。 从需求的角度 比如业务类UserService(UserApi api) . 需要构造这个函数。一开始实例化简单,但是随着业务的跟进你需要保存一些用户设置,构造函数加入SharedPreferences。随着构造函数的数量不断增加,就会变得越来越累赘,并且又是多人合作,依赖别人写的对象。改...

2021-10-17 09:12:26 485

原创 浅谈java接口和抽象类不能实例化原因

首先看看下面这段代码是不是java接口的实例化,代码如下:class MyThread implements Runnable{ ............//此处省略}//另一个类的main方法中:Runnable r = new MyThread();其实很明显,这是父类声明指向子类的引用。具体实例化的是MyThread这个对象。然后进行了思考,针对如下代码:Thread t = new Thread(new Runnable(){ @Override pu.

2021-10-17 08:40:20 319

原创 详解JVM内存空间

java虚拟机基本结构:JVM是一个内存中的虚拟机,那它的存储就是内存了,我们写的所有类、常量、变量、方法都在内存中,因此明白java虚拟机的内存分配非常重要,本部分主要讲解java虚拟机内存分配。本部分会从概念上介绍java虚拟机内存的各个区域,讲解这些区域的作用、服务对象以及其中可能产生的问题。#引入:一个示例下面通过一个简单的示例,来展示java堆、方法区和java栈之间的关系。public class SimpleHeap { private int id;...

2021-10-16 21:20:15 59

原创 什么是jvm虚拟机

最近看了一段时间jdk源码,在看源码的过程中对数据的存储不是很清楚,当时就在想数据到底存在哪里去了?以前只是看博客什么的对jvm有一个大概的了解,但是没有深入研究。经过一段时间的研究<<深入理解java虚拟机后>>,才决定写一些关于jvm的文章,不为别的只为了同为技术的程序员们少走一些弯路,因为这本书第一遍读起来晦涩难懂,我也是查阅了大量的资料才渐渐的理解了什么意思。同时也为了留下自己的脚印,以后几十年后能够看到我在这一年没有荒废时间还在努力的研究技术,估计那时候会欣慰的一笑吧。1

2021-10-16 21:06:25 39

原创 JVM实例和main()方法

别人问了我一个问题假设A和B都继承CA的main方法执行 阻塞B的main方法执行为什么C加载了两次?答案:一个main方法对应一个JVM实例 因此在每个JVM中C只加载了一次-------------------------------------------------------记住:每一个Java应用都唯一对应一个JVM实例,每一个JVM实例唯一对应一个堆。...

2021-10-16 20:58:26 77

原创 堆和栈的区别

堆与栈关于堆和栈的问题,对于熟悉C++的同学来说可能理解的比较清楚,但是由于Java的一切对象都是在堆上,因此有时候可能反而会比较迷惑,比如:为什么要分堆和栈?堆和栈的区别是什么?为什么堆是线程共享的而栈不是?很多懂一点Java的人甚至是懂一点编程的人都知道内存一般分为堆和栈,栈由系统进行关系,而堆由程序员自己管理,...balabala,基本任何一本语言基础书都会提到这些特点,但是你有想过为什么吗?为什么要分堆和栈之所以要区分堆和栈,是由于程序需要两种不同特性的内存形似而确

2021-10-16 20:43:25 23

原创 Java中的enum不能被继承

1、枚举类介绍如果一个类的实例是有限且确定的,那么可以使用枚举类。比如:季节类,只有春夏秋冬四个实例。枚举类使用enum进行创建,其实例必须从”第一行“开始显示写出。enum Season{   SPRING,SUMMER,FALL,WINTER;//默认public static final,这都是Season类的对象。}特点:  1、枚举类的对象默认都是public static final  2、枚举类的构造器都是private,故无法在外部创建其实例,这也决定了枚举类实

2021-10-16 20:34:49 789

原创 Java接口与实现类的转换

1、接口不能直接实例化对象一开始学习接口就知道它与类的区别:接口不能用于实例化对象。但是可以在 Java 中,使用接口类型可用来声明一个变量,他们可以成为一个空指针,或是被绑定在一个以此接口实现的对象。public interface TestInterface{}TestInterface testInterface = new TestInterface();//这种肯定是不允许的2、实现接口的子类可以通过创建对象赋值给接口接口不能实例化,用接口的实现类可以实例化,将实现类的对象在内存中的地址

2021-06-24 17:00:36 2142

原创 ActivityManagerService的理解

ActivityManagerService的理解

2021-06-17 20:36:53 81

原创 Activity启动流程

1.startActivity()通过Instrumentation向AMS进程发起startActivity()请求2.AMS收到启动请求后,由ActivityStarter处理Flags和Intent信息,然后再由ActivityStackSuper visor和ActivityStack处理Task和Stack流程3.

2021-06-07 15:31:47 76

原创 Framework概略

。所以Android也需要运行环境,需要Linux内核在启动完成后加载Android Framework运行所需要的资源。当Framework完成初始化后才能继续启动相应的APK应用程序。一、Framework启动分析Framework运行的第一个Java虚拟机进程为zygote(对应具体程序为app_process,该程序位于system/bin目录下),zygote是APK应用程序的父进程,此后所有的虚拟机进程都由zygote创建。zygote有两个功能:接受请求创建新的Dalvik进程共享类

2021-06-03 20:57:53 37

原创 面试官:为什么 Activity.finish() 之后 10s 才 onDestroy ?

https://zhuanlan.zhihu.com/p/340362623

2021-01-11 16:20:13 177

原创 taskAffinity 属性详解

taskAffinity 属性详解一、本文目的本篇文章的目的是为了 搞清楚,哪些情况下开启一个 Activity 会在新的 task 运行,哪些情况下会继续在原来的task 运行。二、相关基础知识知识点 1每个 Activity 运行时都有一个其归属的 task栈,我们可以用 activity.getTaskId() 的方法得到当前 activity 的taskId。如果两个 activity 的 taskId 不同,则他们肯定不会属于同一个 task。为了方便,我们在 Application

2020-12-18 10:34:25 751

原创 Handler机制终极梳理

Handler机制终极、彻底的梳理,附源码分析和实例剖析!看完醍醐灌顶、豁然开朗!

2020-12-12 18:51:41 68

原创 域名,网站名,URL,URI,端口

简单区分之前就经常看到URL什么的,一直似懂非懂,今天就来整理下吧,我先以下面这个网址为例,说说它包含了哪些东西。https://www.baidu.com/img/bd_logo1.png1. https://代表协议,不是还有什么http,tcp协议嘛,这里不啰嗦这个,简单知道就行。2. www代表服务器名,一个www服务器,比如还有邮箱服务器mail,可以点下qq邮箱试试。3. baidu.com代表域名,用来定位独一无二的网站4. www.baidu.com代表网站名,由服务器名和域名组

2020-06-25 12:44:21 422

原创 浅析html+css+javascript之间的关系与作用

三者间的关系一个基本的网站包含很多个网页,一个网页由html, css和javascript组成。html是主体,装载各种dom元素;css用来装饰dom元素;javascript控制dom元素。用一扇门比喻三者间的关系是:html是门的门板,css是门上的油漆或花纹,javascript是门的开关;html介绍html是用来描述网页的一种语言,它不是一种编程语言,而是一种标记语言(标记标签),总的来说,html使用标记标签来描述网页,本文就用标签来代替标记标签进行说明。标签是指&l

2020-06-25 12:34:03 1039

原创 编程语言、标记语言、脚本语言之间的比较

首先说一下,什么是编程语言,标记语言跟脚本语言:编程语言(programming language):是用来定义计算机程序的形式语言。它是一种被标准化的交流技巧,用来向计算机发出指令。一种计算机语言让程序员能够准确地定义计算机所需要使用的数据,并精确地定义在不同情况下所应当采取的行动。 1.需要编译执行; 2.本身具有逻辑性和行为能力;标记语言:是一种将文本以及文本相关的其他信息结合起来,展现出关于文档结构和数据处理细节的电脑文字编码。...

2020-06-25 12:25:23 214

原创 浅析有趣的分屏

Android N,Android N新增了不少功能,最受关注的自然就是分屏了。这一功能对国内的很多手机用户并不陌生,其实很多第三方系统早已经实现了这一功能,如EMUI,Flyme等等。转存失败重新上传取消分屏操作在我的手机中,就可以一边看视频,一边浏览简书。Android N分屏功能的更新,似乎并不会对我国第三方Android系统带来多大的影响。毕竟厂商有自己实现这一功能的套路。...

2020-04-17 13:24:30 164

原创 聊聊在浏览器输入网址到打开网页,中间的过程

背景分析:这题考查的是面试者对整个上网概念以及背后流程的了解。而俗称的上网大致分为三个方面:1:客户端(也称用户端,较常用的就是万维网使用的网页浏览器)。2:网络传输层(两台计算机经过计算机网络进行的数据通信)。3:服务端(为客户端提供服务,提供资源,保存客户端数据的一种服务程序)。一:URL解析名词解释:URL :(Uniform Resource Locator)统一资源定位符...

2020-04-16 19:17:17 547

原创 关于Android Gradle

为什么需要学Gradle?Gradle 是 Android 现在主流的编译工具,虽然在Gradle 出现之前和之后都有对应更快的编译工具出现,但是 Gradle 的优势就在于它是亲儿子,Gradle 确实比较慢,这和它的编译过程有关,但是现在的Gradle 编译速度已经有了成倍提高。除此之外,相对其他编译工具,最重要的,他和 Android Studio 的关系非常紧密,可以说对于一些简单的程...

2020-04-12 14:28:43 87

原创 浅析WIFI模块

一:什么是WIFIWIFI是一种无线连接技术,可用于手机、电脑、PDA等终端。WIFI技术产生的目的是改善基于IEEE802.11标准的无线网络产品之间的互通性,也就是说WIFI是基于802.11标准的,但WIFI不等同无线网络。二:Android平台下的WIFI模块简单介绍一下,WIFI模块的基本功能:1. 开关WIFI除了在WIFI设置界面可以开关WIFI,还有其他的方法可以...

2020-04-11 16:25:15 708

原创 可变长参数在Java中

在Java1.5之后在方法上传参时便出现了**"…"**,这三个点的学名叫做可变长参数,也就是相当于一个数组,能够传入0个至n个参数public static void main(String[] args) { String[] t1 = {}; String[] t2 = {"java","C++"}; String t3 = "java"...

2020-03-28 09:08:06 116

原创 啥是业务逻辑

不同的项目有不同的功能,不同的功能需要不同的实现,实现这些核心功能的代码就叫业务逻辑比如让你实现一个功能,给你两个数,让你获取它的和,你所写的如何才能获得任意给定的两个数的和,这个程序实现过程即可成为业务逻辑处理。业务逻辑就软件来讲就是软件所实现的功能,ui可以变,价格可以变,只要功能不变,业务逻辑就不变。...

2020-03-26 15:05:22 862

原创 Java 枚举(enum) 7种常见的用法

JDK1.5引入了新的类型——枚举。在Java中它虽然算个“小”功能,却给我的开发带来了“大”方便。用法一:常量在JDK1.5之前,我们定义常量都是:public static fianl....。现在好了,有了枚举,可以把相关的常量分组到一个枚举类型里,而且枚举提供了比常量更多的方法。Java代码publicenumColor{RED,GREE...

2020-03-26 14:11:22 277

原创 AS编写运行测试纯java代码,带main()函数

问题小伙伴们在做安卓项目的时候,是不是有时候会忘记某些api的使用方法,不太确定他们的结果是怎样的,需要写一些测试代码,验证看看我们的写法是否正确。刚开始的时候我是在页面上写一个Button,添加点击事件,在onClick()里面调用测试代码,每次测试都需要安装apk,点击按钮,查看Logcat打印是否正确。这样非常麻烦,也耗费很多时间。毕竟时间很宝贵,我就在想,能不能在Android Stu...

2020-02-19 15:01:14 715 3

原创 白盒测试和黑盒测试的区别

白盒测试:是指实际运行被测程序,通过程序的源代码进行测试而不使用用户界面。这种类型的测试需要从代码句法发现内部代码在算法、溢出、路径和条件等方面的缺点或者错误,进而加以修正。白盒测试把测试对象看作一个打开的盒子。黑盒测试:又称功能测试、数据驱动测试或基于规格说明的测试,是通过使用整个软件或某种软件功能来严格地测试,,而并没有通过检查程序的源代码,或者很清楚地了解该软件的源代码程序具体是...

2020-02-06 16:45:09 53576 2

原创 职业规划:兴趣不是挡箭牌,关键是要找到你的成就动机

“世界末日”来临前夕我收到三封网友的email,不约而同问的都是求职相关的问题。看来大家还是满理性的嘛!确实,“搞清楚自己的特质,并且从事对的行业”绝对要比担忧马雅人的石碑更具备管理上的意义。其中一位网友在信中特别提到我之前写的两篇文章:“找出生涯规划的关键字,5步确定自己想要的方向”与“只要画3个圈,为你的职业生涯决策装上方向键”。他很客气的说他非常喜欢这两篇文章,引发他很多思考,但当我看完整...

2020-02-03 16:32:45 279

原创 不明白自己的兴趣和特长,就是瞎忙活。

所谓成功,就是在自己擅长的领域发挥自己的天赋。无论是否赚取了财富,这样的一生都是精彩的。【兴趣】一些专家领袖,教育大学生要追寻自己的激情,追寻自己的兴趣。所谓为自己而活,要活出真我。其实这是一个特别操蛋而且遗毒万年的理论。永远要记住,激情和兴趣都是暂时的,一旦以他谋生就会变得庸常枯燥。“娶了红致瑰,久而久之,红的变了墙上的一抹蚊子血,白的还是窗前明月光;娶了白玫瑰,白的便是粘在衣服上的一粒...

2020-02-03 12:59:57 307

MVP模式代码

该代码包采用MVP模式,逻辑清晰、便于理解,对于学习MVP模式有很大帮助!

2018-09-02

即时音视频聊天

完整的音视频聊天代码,有详细说明,完美的帮助你!

2016-01-13

通用指南针

这是一款通用精美的指南针程序,无论菜鸟还是大神都可以拿去学习,下载后直接解压,里面就是源码包,导入Eclipse即可!

2014-08-26

百度定位源码包

这是一款基于百度SDK的定位程序,非常精准!通过百度地图显示出来!下载后解压,里面是源码,一目了然,直接应用!

2014-08-26

日历程序源码包

这是一款简洁实用的日历程序,里面的代码很详细!对相关开发者很有帮助!解压后,里面就是源代码,一目了然!

2014-08-26

图片放大镜

可以放大背景图片上区域。通过PathView和ShaderView来构成放大的View

2014-04-30

空空如也

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

TA关注的人

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