自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Android9.0源码APP启动流程

本文使用到的相关源码路径:Android9.0 APP启动源码1、启动简介1.1、启动流程:点击桌面App图标,Launcher进程采用Binder IPC向system_server进程发起startActivity请求;system_server进程接收到请求后,向Zygote进程发送创建进程的请求;Zygote进程fork出新的子进程,即App进程;App进程,通过Binder...

2020-02-01 19:24:55 809

原创 Launcher进程启动

文章已同步Github博客:Launcher进程启动使用到的相关源码:https://github.com/JesusYoung/AndroidResourceCode9.0/tree/master基于Android 9.01、LauncherLauncher作为Android系统的桌面,它的作用有两点:作为Android系统的启动器,用于启动应用程序;作为Android系统的桌面...

2020-01-17 16:58:19 993

原创 SystemServer进程启动

文章已同步Github博客:SystemServer进程启动使用到的相关源码:https://github.com/JesusYoung/AndroidResourceCode9.0/tree/master基于Android 9.01、SystemServer进程作用SystemServer进程主要是用于创建系统服务的,例如AMS、WMS、PMS;SystemService进程被创建后,...

2020-01-17 16:54:47 437

原创 Zygote进程启动流程

博客同步至github博客:Zygote进程启动流程使用到的相关源码:https://github.com/JesusYoung/AndroidResourceCode9.0/tree/master基于Android 9.01、Zygote进程Zygote是在init进程启动时创建的,它又称为孵化器,它可以通过fork(复制进程)的形式来创建应用程序进程和SystemServer进程,并且...

2020-01-17 16:49:43 1110

原创 AIDL中的数据流向

文章已同步github博客:AIDL中的数据流向1、AIDL文件1.1、文件类型文件后缀名为.aidl;1.2、数据类型1.2.1、默认支持类型默认支持的类型不需要导包;Java八种基本类型:byte、short、int、long、float、double、boolean、char;String类型;CharSequence类型;List类型:List中的所有元素必须是AID...

2019-12-26 02:18:55 533 2

原创 Java字节码指令分析

文章已同步github博客:Java字节码指令分析1、概念分析字节码指令之前,先明确以下几个概念;1.1、程序计数器​JVM中的程序计数器,执行非native方式时,程序计数器保存Java虚拟机正在执行的字节码指令地址,对于native方法,保存的值是undefined;1.2、虚拟机栈​线程私有,用于存储栈帧,只收栈帧出栈和入栈影响,活动线程中,只有位于栈顶的栈帧才是有效的,称为当前...

2019-12-12 15:36:43 951 3

原创 Java编译后的class文件解析

文章已同步github博客:Java编译后的class文件解析编译Java类写Java类编写一份Java类,即.java文件,例如:package com.jesus.util;public class TestDemo { public static final String SUCCESS = "success"; public static void main...

2019-12-05 02:23:16 2304 2

原创 View、ViewGroup的事件分发机制

1、事件概念    当发生点击事件时,大致的调用顺序是先调用最外层View的dispatchTouchEvent方法,然后调用onInterceptTouchEvent方法,再调用onTouchEvent方法;    分发、拦截、消费,一个事件的所经历的就是这些处理的组合;   &n...

2019-09-17 01:04:48 1168

原创 WebView与Js交互-JsBridge的使用

这里写自定义目录标题前言github地址功能使用方法添加依赖推荐方式简单封装JS库文件判断手机类型设置Android手机桥接设置IOS手机桥接设置Android和IOS统一桥接口JS调用函数JS库文件整体代码Html页面设置Android端使用(这里省略IOS,用法基本相同)xml布局设置Java代码(客户端调用)注册webview监听Java主动调用Js函数测试截图前言在WebView的开发...

2019-05-17 11:42:12 9106 2

原创 获取Spring中bean对象或在Spring初始化完成之后使用Spring中bean对象

之前一直没有做过服务端东西,现在有个需要,在服务端启动后,后台一直轮询查询一个信息,若发现信息则提醒用户,给用户发送一个通知。        因为以前对服务端的涉及也就是在客户端去调用服务端的Action,这样服务端是被动的去执行某个方法,现在要在服务端主动去执行,刚开始有一些懵,不断在网上查找资料,尝试,将自己的一些方法和遇到的坑记录下来。        首先我用的方法的是,新建一个类,

2017-02-08 19:11:03 5398

原创 Android Studio一些常用的快捷键

Android Studio使用起来的确方便很多,但是之前习惯用Eclipse的人会觉得有些头大,因为快捷键的问,在EC中的快捷键都已经用到烂熟,而在AS中却还需要重新记,这里我也遇到了同样的问题,为此,将一些常用的快捷键记录下来,方便以后查看(随时更新):        (一些类似于Ctrl + C,Ctrl + S这类快捷键就不再这类浪费篇章了)                Al

2016-12-06 16:19:55 384

原创 Android ConstraintLayout布局的使用

在今年的Google I/O大会上,Google推出了Android Studio2.2,同时也推出了一种新的布局ConstraintLayout布局,称为约束布局,本文我们就来简单了解一下这个新布局的使用方法,其实ConstraintLayout跟RelativeLayout是有一些相似的,只是用起来更方便,并且是可以直接完全通过拖拽界面元素去设计布局,下面链接是Google官方的原文链接:

2016-11-11 12:40:10 887

原创 源码分析commitAllowingStateLoss() 和commit()的区别

之前在使用Fragment的时候偶尔会有这么一个报错,Can not perform this action after onSaveInstanceState,意思为无法再onSaveInstanceState之后执行该操作,这个操作就是指commit(),之前也没怎么在意,后来通过查看源码去了解了一下这个问题,以下是对这个问题的解析及对应解决办法的对比。        Fragment是我

2016-10-26 11:20:04 26853 6

原创 Android HashMap源码解析

在Android中,HashMap也是经常用到的,这里我根据源码简单分析一下HashMap        首先我们一般从构造方法看起,在看构造方法之前,我们先了解一下HashMapEntry这个类,源码如下: static class HashMapEntry implements Entry { final K key; V value;

2016-09-19 15:54:03 750

原创 List集合去除重复对象及equals()、hashCode()方法的作用

在java中,要将一个集合中重复的对象除去,如果这个集合中的数据类型是基本数据类型,可以直接将list集合转换成set,就会自动去除超重复的元素,大家都知道set集合的特点就是没有重复的,这个就相对比较简单,这里不在详细说,我们下面说的list集合中的数据类型是一个对象类型的。        当list集合中存储的类型是对象类型的时候,我们就不能简单的只把list集合转换成set集合就行了,这

2016-08-15 15:27:58 18783 4

原创 Android蓝牙开发入门

在Android开发中不免会涉及到蓝牙的使用,尤其是在物联网发展迅速的现在,好多设备都是通过蓝牙来连接的,今天我们就简单的了解一下Android开发蓝牙,这里只是对蓝牙简单的做一个入门的解释,后面会继续对蓝牙的各个功能深入去讲解。        首先,在Android手机上开发蓝牙操作,需要用到android.bluetooth包,其中BluetoothAdapter是蓝牙开发中的核心类,代表

2016-08-10 16:23:27 767

原创 Android发送邮件

在Android开发中,邮件发送一般常用两种方式,一种是调用系统的邮箱来放,另一种是自己去编程实现邮件的发送,第一种方式比较简单,通过Intent的隐式意图去打开系统的邮箱,并通过intent的传值指定收件人(抄送、密送等)、主题和内容,这个比较简单,这里就不再介绍,主要是介绍一下第二种方法,即自己定义邮件发送的工具类。一、创建邮件实体类public class MailInfo {p

2016-08-04 17:20:30 845

原创 ScrollView嵌套GridView冲突解析

最近项目开发中,用到了ScrollView中嵌套GridView的情况,但是这两个View都是带有滚动的,当把其中一个嵌套到另一个里面的时候(例如我将GridView嵌套到ScrollView里面),就会出现冲突了,表现为GirdView显示不全。    解决方法也比较简单,只需要我们重新定义GridView,即自定义一个GridView,重写里面的onMeasure()方法:public clas

2016-03-04 13:52:35 683

原创 @SuppressLint("DrawAllocation")作用和解决方法

在Android自定义控件中,经常会遇到这样的一些警告(如下图),这些警告如果不去处理的话,并不会影响我们程序的正常运行,但是总有强迫症的人看了会觉得很不爽,比如我就是其中一个。    其实,既然程序会报出这样的警告,肯定就会有他的不合理之处,只是并不会导致程序发生错误无法运行,我们写的代码平时也不多,所以一般对我们的程序不会有多大的影响,但是他会影响整个程序的安全性及一些其他性能,所以我们还是尽量

2016-02-26 17:06:52 5034

原创 Android中数据存储----偏好设置

偏好设置也是Android中的数据存储方式的一种,它是以键值对的形式来存储数据的,用来存储一些比较小型的数据,我们在实际开发中,是经常会用到的,而且用户在平常的使用中,也会在不停的使用,偏好设置还是挺方便的。    偏好设置    作为一名Android的开发者,你不可以不知道偏好设置,对于一下较小的数据,以键值对形式保存的数据,我们可以采用偏好设置来存储,例如用户是否选择打开wifi、用户设置的字

2015-12-31 12:13:02 2967 1

原创 Android中连续点击两次BACK键退出程序

在Android开发中,我们正常退出程序时,经常会设置这样一个小特色,就是短时间内连续按下两次BACK键才会将程序退出,对于这种设置,我们通常会使用两种方式来解决。    一、通过记录两次按下BACK键的时间差来判断    这种方式也比较好理解一点,我们可以设置一个第一次点击的时间变量和第二次点击的时间变量,通过两次点击的时间差是否在一个规定的时间段内即可,例如,当第二次按下时与第一次按下时的时间差

2015-12-21 22:57:30 1092

原创 Android中killProcess()、System.exit(0)及finish()的区别

在Android中,提起退出一个程序,大家都很熟悉,而且也会随口说出好多方式,众所周知的,我们常常能见到的如finish(),这个方法相信用到的最多了,当然还有System.exit()和android.os.Process.killProcess(android.os.Process.myPid()),但是,这些方法的用途肯定又有不同,这篇博客我们一起来看看他们之间的不同。    一、finish

2015-12-21 21:59:16 5162

原创 Android自定义控件

在Android开发中,大家经常会提到自定义控件的问题,对于好多初学者来说,可以说谈之色变,其实自定义控件并没有那么难,下面我就带大家通过写一个自定义控件—–通讯录右侧的导航字母,来解释一下自定义控件的使用。    在解释之前先给大家看一下运行的具体效果,由于我不会截取动态图,所以就普通图片给大家看一下啦,我们要实现的就是如下图中右侧的字母导航,我们可以点击右侧的某个字母来直接快速查找首字母为该字母

2015-12-10 00:43:16 426

原创 Parcelable接口的使用

在Android开发中,我们经常需要传递数据,但是,在传递时候,如果我们需要传递的数据类型是自定义的数据类型,我们就需要将其序列化之后再进行传递。 Android中序列化对象有两种方法        1、实现Serializable接口,实现Serializable接口是JavaSE本身就支持的,该方法只需要将自定义数据类型实现该接口即可;        2、实现Parcelable接口,Pa

2015-12-09 01:24:25 572

原创 Invalidate和postInvalidate的区别

在Android实际开发中,我们常常需要进行View的刷新(例如:自定义控件等),Android中为我们提供了两组刷新View的方法----Invalidate和postInvalidate,前者是在UI线程中更新View,而后者是在非UI线程中更新VIew,两组方法的具体区别如下介绍:我们都知道,在Android中,更新UI的操作要在UI线程(也就是主线程)中进行,因为Android UI操作并

2015-12-06 23:45:10 384

jg-gui.jar

可查看源码,进行反编译需要等

2016-08-12

空空如也

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

TA关注的人

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