自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Java异常try{}catch{}中的return机制

当try 和catch 中都有返回时,方法是不允许有return,因为代码不会执行到try catch之外。2.先进入到catch中,然后是finally,最后执行方法return。无法执行,因为finally一定会被执行,方法的return无法执行。最终执行finally中的return。1.方法执行完毕后抛出异常。

2023-09-12 11:26:26 744

原创 数据结构之单链表java实现

NEXT作为一个空指针,其代表了一个可以指向的区域,通常是用来指向下一个结点,链表尾部NEXT指向NULL(空),因为尾部没有任何可以指向的空间了。其中,DATA是需要存储的数据元素,可以为任何数据格式,可以是数组,可以是int,还可以是结构体。从结点的结构上面来说,我们需要修改的是next,将next由指向下一个改成指向上一个。单链表的基本设计思维是,利用结构体的设置,额外开辟一个空间去做指针,指向下一个结点。eg:链表中输入0,1,2,3,4,输出 4,3,2,1,0。链表反转是一道比较常见的面试题。

2023-08-29 00:07:27 1062

原创 Handler机制(二)

在上一篇文章中,我们分析了Handler基本流程,下面分析一些上层开发很少接触的部分。

2023-08-20 16:42:38 141

原创 Handler机制(一)

可以看到主线程是调用Looper.prepareMainLooper()创建了Looper,而且不需要用户手动创建,在Activity启动时就已经创建了,子线程是需要通过prepare()手动创建Looper,并会创建一个MessageQueen能够退出的消息队列。Looper的功能很简单,核心方法Looper.loop()就是不断地从消息队列中分发对应的宿主Handler,它与对应的MessageQueue息息相关,一起创建,一起退出。loop() 方法主要是就是开启死循环,调用loopOnce方法。

2023-08-16 19:28:03 209

原创 Dagger2基本使用

Dagger是一个完全静态的、编译时的依赖注入框架,适用于java、Kotlin语言,主要用在Android开发中。早期要Square创建,现在由Google进行维护。Dagger相比较其它依赖注入框架最大优势是没有采用反射技术,使用APT技术。引入Dagger在Moudle的build中引入 implementation 'com.google.dagger:dagger-android:2.41' implementation 'com.google.dagger:dagger-a

2022-05-21 19:48:18 529

原创 SystemUI分析

简介SystemUI是一个持续的进程,为系统提供UI,作为Android系统的核心应用,SystemUI负责反馈系统及应用状态并与用户保持大量的交付。SystemUI的路径代码位置在frameworks\base\packages\SystemUIapk安装目录system/priv-app/SystemUI不同手机的SystemUI可能有所不同,比如小米手机的安装...

2020-07-06 11:16:49 1566

原创 Android Binder原理初探

1、Binder的通信原理动态内核可加载模块&&内存映射在Android Binder开卷中所说的IPC通信模型中所描述的,跨进程通信需要内核空间做支持。传统的IPC机制如管道,Socket都是内核的一部分,因此通过内核支持来实现进程间通信自然没有问题。但是Binder并不是Liunx系统内核的一部分。Binder机制得益于Liunx的动态内核可加载模块(Loadable ...

2020-01-18 17:42:23 298

原创 Liunx系统目录结构

登录系统后,在当前窗口输入命令:ls /树状目录结构文件系统是用来组织和排列文件存取的,所以它是可见的,在Liunx中,我们可以通过ls等工具来查看其结构,在Liunx系统中,我们见到的都是树形结构。文件系统的最顶层是由根目录开始的,系统使用/来表示根目录。在根目录之下的既可以是目录,也可以是文件,而每一个目录中又可以包含子目录文件。在Liunx文件系统中有两个特殊目录,一个用户所...

2020-01-14 19:10:47 226

原创 SettingsProvider简单分析

SettingsProvider顾名思义是一个提供数据共享的Provider,SettingsProvider和Android系统其它Provider有很多不一样的地方:1.SettingsProvider只接受int float String等基本类型的数据;2.SettingsProvider由Android系统frameowrk进行了封装3.SettingsProvider的数据...

2020-01-11 10:52:46 3779 2

原创 Git常用命令记录

前言Git和其它版本控制系统如SVN的不同之处就是有暂存区的概念。Git本地有四个工作区域:工作目录(working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git仓库(Remote Directory)。Workspace:工作区,就是本地电脑能够看到的文件夹,本地放代码的地方Index/Stage:暂存...

2019-12-31 17:40:28 125

原创 Android Binder开卷

一、IPC介绍IPC全名为inter-Process Communication,含义为进程间通信,是指两个进程之间进行数据交换的过程。1.1为什么需要使用IPC?内核空间和用户空间在操作系统中存在用户空间(User space)和内核空间(Kernel space)。Liunx采用虚拟内存管理技术,每一个进程都都有各自独立的进程地址空间(以32位系统为例,空间为4G大小的线性...

2019-12-24 22:44:22 193

原创 Launcher3去掉抽屉模式

目前接收到一个需求,因为是小屏手机,需要修改为4宫格模式,去掉抽屉,将所有应用展示在一级页面。1、加入开关Launcher3\src\com\android\launcher3\LauncherAppState.java添加一个方法 public static boolean isDisableAllApps() { return true; }2、a...

2019-12-18 15:16:04 2747

原创 Launcher3移除桌面搜索栏

device/google/marlin/common/base.mkdevice/mediatek/mt6739/device.mkdevice/mediatek/common/device.mkbuild/make/target/product/core.mk删除QuickSearchBoxLauncher3\src\com\android\launcher3\config\Bas...

2019-12-17 15:44:27 923

原创 Launcher3移除Hotseat图标

Launcher3/res/xml/default_workspace_4x4.xml中删除<include launcher:workspace="@xml/dw_phone_hotseat" />这个时候不会出现Hotseat图标,但是底部仍然会有空白的空间Launcher3\src\com\android\launcher3\DeviceProfile.java...

2019-12-17 15:33:56 1943

原创 Launcher3源码分析之布局分析

Launcher3中会在Launcher.java中加载主布局launcher.xml<com.android.launcher3.LauncherRootView xmlns:android="<http://schemas.android.com/apk/res/android>" xmlns:launcher="<http://schemas.a...

2019-12-07 14:15:20 1258

原创 Launcher3分析之数据加载与绑定

Launcher3的主界面是packages/apps/Launcher3/src/com/android/launcher3/Launcher.java首先分析onCreate @Override protected void onCreate(Bundle savedInstanceState) { if (DEBUG_STRICT_MODE) {...

2019-12-06 11:45:37 1324

原创 Launcher3源码分析之启动分析

1、Launcher大体布局架构2、Launcher3 主要目录解析allapps 目录:主要存放主菜单界面相关代码。anim目录:存放动画相关代码,主要是动画基类代码。badge目录:主要存放图标标识相关代码,例如通知小圆点等compat目录:主要存放解决兼容性相关的代码。config目录:主要配置Launcher相关功能的宏开关,目前Launcher原生新增的功能宏...

2019-12-03 15:01:55 984

原创 SystemUI系列之StatusBar

在上一篇(https://blog.csdn.net/u011164827/article/details/102998091)分析到SystemUI的启动过程,现在分析StatusBar。启动分析SystemUI在SystemUIApplication会启动各个模块,在这个地方会调用com.android.systemui.SystemBars的start方法。frameworks/...

2019-11-14 13:52:33 1698 1

原创 Android系统启动过程分析

1、启动流程概述1、BootLoaderBootLoader主要是在系统加载前,初始化硬件设备,建立内存空间的映像图,为最终调用系统内核做好环境。在 Android 中主要划分为一下几个分区:/boot:存放引导程序,包括内核和内存操作程序/system:相当于电脑c盘,存放Android系统及系统应用/recovery:恢复分区,可以进入该分区进行系统恢复/data:用户数据区,...

2019-11-06 19:56:01 496

原创 Android EventLog

一、概述EventLog是Android中重要的log,能够用来分析系统的各种状况,比如activity的生命周期,电池状态等在终端输入logcat -b events能够打印出evetnlog。同时在MTKLog的mobilelog文件夹下面也能看到evetnlog。tags格式的定义位于文件system/etc/event-log-tags同时,阅读详细信息可以查看源码中的...

2019-11-06 14:48:02 7793

原创 MTK Log分析

Log抓取在手机电话号码输入:##3646633##MTKLog 结构分析MTK Log是在mtklog目录下1、gpsdbglog //gps Log2、mdlog1 //modem 相关底层的log,里面可能有多个文件夹,每打开一次MTK Log就会新建一个文件夹3、mobilelog // android log 和 kernel log,里面可能有多个文件夹,每打开一次M...

2019-11-05 17:58:31 3405

原创 MTK Android.mk解读

预制第三方apk在vendor/freeme/samples 中的Android.mk-sample中可以看到示例。# Prebuilt apkinclude $(CLEAR_VARS) //必须先定义LOCAL_PATH 变量,此变量表示源文件的位置。编译系统提供的宏函数 my-dir 将返回当前目录(Android.mk 文件本身所在的目录)的路径。LOCAL_MODULE ...

2019-09-16 12:41:51 1435

原创 Settings中Battery分析

###分析电池状态RG170:/ $ dumpsys batterydumpsys batteryCurrent Battery Service state: AC powered: false //充电器充电 USB powered: true Wireless powered: false //无线充电 Max charging current: 5000000 ...

2019-09-11 16:00:29 1132

原创 android APN解析

APN全称是Access Point Name,中文即接入点,是通过手机上网时必须配置的一个参数,它决定了手机通过哪种接入方式来访问网络。 /system/etc/apns-conf.xml,手机中的apn在这个位置。<apn carrier="中国移动彩信 (China Mobile)" mcc="460" mnc="00" a...

2019-07-31 18:49:21 2146

原创 Android JNI与C互调

JIN方法签名在C中调用Java中方法时需要使用到方法签名。就是将方法的返回类型和参数类型转换为特定的符号。规则如下:java类型符号BooleanZByteBCharCShortSIntILongJFloatFDoubleDVoidV数组[ , 如:int[]-> [I, int[][]-&g...

2019-04-17 18:34:30 1061

原创 JNI初步配置和使用

什么是JNI?  JNI是Java Native Interface的缩写,它提供了若干的API实现了Java和其他语言的通信(主要是C&C++)。从Java1.1开始,JNI标准成为java平台的一部分,它允许Java代码和其他语言写的代码进行交互。JNI的副作用编辑  一旦使用JNI,JAVA程序就丧失了JAVA平台的两个优点:1、程序不...

2019-04-13 16:04:31 1019

原创 Android SQLite的基本使用方法

1、SQLite简介 SQLite是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。它是一个零配置的数据库,这意味着与其他数据库一样,您不需要在系统中配置。就像其他数据库,SQLite 引擎不是一个独立的进程,可以按应用程序需求进行静态或动态连接。SQLite 直接访问其存储文件。SQLite优点不需要一个单独的服务器进程或操作系统 S...

2019-03-24 12:01:25 498

原创 java核心技术卷一笔记(继承)

利用继承,可以基于已存在的类构造一般新类。继承已存在的类就是复用这些类的方法和域。在此基础上,还可以添加新的方法和域,以满足新的需求。extends表明正在构建的新类派生于一个已存在的类。已存在的类称为超类、基类或父类,新类称为子类、派生类或者孩子类。覆盖方法(重写方法)是指子类重新定义超类的方法,只改变方法内部,不修改方法名、参数和返回类型。可以在子类中使用super调用超类的方法。...

2019-03-11 18:04:37 139

原创 java核心技术卷一笔记(对象与类)

封装:封装是将数据和行为组合在一个包中,并对对象的使用者隐藏了数据的实现方式。对象中的数据称为实例域,操纵数据的过程称为方法。对于每个特定的类实例(对象)都有一组特定的实例域值。这些值的集合就是这个对象的当前状态(state)。实现封装的关键在于绝对不能让类中的方法直接访问其他类型的实例域。程序仅通过对象的方法与对象数据进行交互。类之间的最常见的关系:依赖:一个类A的方法操纵另外一个类B的...

2019-03-09 17:01:29 133

原创 Android 进阶之光阅读笔记(Material Design)

一、核心思想 Material Design的核心思想,就是将物理世界中的体验带入屏幕,并且去掉物理世界中的杂质,再配合虚拟世界的灵活性,达到最贴近真实的体验。1.2 材质与空间 魔法纸片是Material Design中最重要的信息载体。它拥有现实的厚度、惯性和反馈,并且能够自由伸展变形。魔法字片引入了Z轴的概念,Z轴垂直于屏幕,用来表现元素的层叠关系。Z值越高,元...

2019-02-28 11:49:02 118

原创 Volley的使用(一)

1、Volley简介Volley是2013年google I/O上发布的一款网络框架,基于Android平台,能使网络通信更快、跟简单、更健全。优点:1、默认Android2.3及以上基于HttpURLConnection,2.3以下使用基于HttpClient;2、符合Http缓存语义的缓存机制(提供了默认的磁盘和内存等缓存);3、请求队列的优先级排序;4、提供多样的取消...

2019-02-26 17:23:17 857

原创 突破Android O广播限制

Android O对隐式广播进行了限制, 其限制链接说明: https://developer.android.com/about/versions/oreo/background如果应用注册为接收广播,则在每次发送广播时,应用的接收器都会消耗资源。 如果多个应用注册为接收基于系统事件的广播,这会引发问题;触发广播的系统事件会导致所有应用快速地连续消耗资源,从而降低用户体验。为了缓解这一问题,...

2019-02-25 11:26:19 896

原创 沉浸式状态栏

     在《第一行代码》中提到了一种实现方式:使用 android:fitsSystemWindows="true" 属性来设置。不过还需要将&lt;item name="android:statusBarColor"&gt;@android:color/transparent&lt;/item&gt;设置一下,将状态栏设置为透明状态,不过android:statusBarColor属性...

2018-07-27 18:48:11 148

原创 百度地图开发之开发环境搭建

1、申请API Key打开点击打开链接,可以查看自己申请的key。点击创建应用,进入一下界面AS获取SHA1有两种方式,第一种方式是点击右侧工具栏的Gradle-&gt;项目名-&gt;.app-&gt;Tasks-&gt;android,选择signingReport,点击两下,可以在控制台看到SHA1的信息。另外一种方式请看点击打开链接。2、配置百度地图SDK下载地址点击打开链接,下载完成后对...

2018-06-02 11:28:19 416

原创 常用命令记录

ADB命令adb logcat -v time > D:/log.txt //将log保存到D盘的log.txt文件中adb logcat -s TAG //查找关键字为TAG的log使用aapt查看apk包名和启动Activity进入appt.exe文件夹执行aapt dump badging E:\apk\es3.ap...

2018-05-22 15:56:10 198

转载 Android艺术开发探索——Activity的生命周期全面分析

1.1.1典型情况下的生命周期分析在正常情况下,Activity会经历如下生命周期。(1)onCreate :表示Activity正在被创建,这个是生命周期的第一个方法。在这个方法中,我们可以做一些初始化工作,比如嗲用setContentView去加载界面布局资源、初始化Activity所需数据等。(2)onRestart:表示Activity正在重新启动。一般情况下,当当前Activity从不可...

2018-05-19 16:00:40 143

原创 IPC(Inter-Process Communication, 进程间通信)

    之前在面试的时候经常问道Android的进程间通信方式有几种,当时在百度上搜索的答案不尽相同。后来在看源码分析的时候才发现了答案。现在记下来。   Android是是使用了Linux内核,Linux现有管道、消息队列、共享内存、套接字、信号量、信号这些IPC机制,Android 同时额外采用了Binder IPC机制(至于为什么采用BInder机制,可以看看为什么 Android 要采用 ...

2018-04-28 16:11:04 1044

原创 fragment学习

    Fragment是在Android 3.0(API level 11)中被引入的,在使用过程中需要继承Fragment类来创建一个新的Fragment。Fragment生命周期:public class Fragment1 extends Fragment { private static String TAG = "Fragment1"; //调用该方法时,Fragmen...

2018-04-09 19:13:56 135

原创 Activity中finish()和onDestroy()的区别

在Activity的生命活动周期中onDestroy()方法是用来结束Activity的生命周期,释放Activity所占用的资源。但是在我们写程序的时候更多的是调用finish()方法。finish方法是将Activity移出返回栈,所以当你点击手机上面的“back”按键的时候,也不会再找到这个Activity。同时也会调用onDestroy()方法,但是当别的对象还持有这个Activity

2016-09-14 11:02:11 1139

转载 Intent之Component

1、Intent的概念: Android中提供了Intent机制来协助应用间的交互与通讯,或者采用更准确的说法是,Intent不仅可用于应用程序之间,也可用于应用程序内部的activity, service和broadcast receiver之间的交互。Intent这个英语单词的本意是“目的、意向、意图”。 Intent是一种运行时绑定(runtime binding)机制,它

2016-03-27 20:13:21 1334

最新的git安装版本

最新的git安装版本

2018-10-05

空空如也

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

TA关注的人

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