自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Android-APP启动优化

Android-APP启动优化伪优化案例占位图方案总结(修改全局的主题)修改局部的主题真正的优化优化真正优化的总结黑白屏问题优化黑白屏在商业APP中的价值如何使用Traceview工具对优化定位处理伪优化用于用户体验,用来给到用户体验,没有实质性的优化案例注意看这一块(parent=“Theme.AppCompat.Light”)如果没写这一块,启动时会是一个黑屏,写了这一块,启动时会是一个白屏; <!-- Base application theme. --> &

2020-07-05 19:34:04 2723 1

原创 Android-消息机制(Handler机制)浅析

Android-消息机制浅析简介Android消息机制主要就是指Handler的运行机制;借用网络的图片图解:1.以Handler的sendMessage方法为例,当发送一个消息后,会将此消息加入消息队列MessageQueue中。2.Looper负责去遍历消息队列并且将队列中的消息分发给对应的Handler进行处理。3.在Handler的handleMessage方法中处理该消息,这就完成了一个消息的发送和处理过程。这里从图中可以看到参与消息处理有四个对象,它们分别是 Handler,

2020-05-25 21:23:50 339

原创 Android-图片加载Gilde

Android-图片加载GildeGilde-github介绍Glide会在开始一个新的图片请求之前检查多级缓存;调用into之后,会依次按这个顺序查找:1、活动缓存(Active Resources):如果当前对应的图片资源正在使用,则这个图片会被Glide放入活动缓存。2、内存缓存(Memory Cache):如果图片最近被加载过,并且当前没有使用这个图片,则会被放入内存中3、资...

2020-05-23 15:40:56 667

原创 Android UI绘制优化及建议

CPU与GPU工作流程CPU 的任务繁多,做逻辑计算外,还要做内存管理、显示操作,因此在实际运算的时候性能会大打折扣,在没有 GPU 的时代,不能显示复杂的图形,其运算速度远跟不上今天复杂三维游戏的要求。即使 CPU的工作频率超过 2GHz 或更高,对它绘制图形提高也不大。这时 GPU的设计就出来了黄色的 Control 为控制器,用于协调控制整个 CPU 的运行,包括取出指令、控...

2019-06-11 22:48:29 392 1

原创 Android 内存泄漏的检测和解决

Android 内存泄漏的检测和解决前言MAT工具下载地址Android Profiler的使用1、Run菜单下的profile2、导出hprof文件3、文件格式转换MAT工具使用1、导入文件2、分析开始总结典型处理方案优化内存的良好编码习惯前言Android内存泄漏的产生的原因:一个长生命周期的对象持有一个短生命周期对象的引用通俗讲就是该回收的对象,因为引用问题没有被回收,最终会产生OOM...

2019-05-30 18:06:28 850

原创 Android-APK极限压缩

Android-APK极限压缩webp解码耗时对比编码耗时对比极限压缩原始APK大小21.6 MB第一步:图片转webp21.4MB,小了一点第二步:减少国际化(去除多种语言)21.3MB第三步:减少CPU架构平台9.92MB第四步:移除无用资源可以用这一种:Lint检查9.82MB第五步:开启混淆8.02MB第六步:开启删除无用资源(与Lint不同)7.68MB第七步:微信和科技(AndResGuard)6.72MBwebpWebP最初在2010年发布,目标是减少文件大小,但达到和JPEG格式相同的图

2021-04-01 23:52:00 659

原创 Android-APK加固-简单版

Android-APK加固-简单版Proguard的使用与配置介绍开启proguard常用配置加固大体思路Proguard的使用与配置介绍Proguard是一个代码优化和混淆工具。能够提供对Java类文件的压缩、优化、混淆,和预校验。压缩的步骤是检测并移除未使用的类、字段、方法和属性。优化的步骤是分析和优化方法的字节码。混淆的步骤是使用短的毫无意义的名称重命名剩余的类、字段和方法。压缩、优化、混淆使得代码更小,更高效。开启proguardminifyEnabled truebuildTyp

2021-03-31 23:41:51 681

原创 Android-Bitmap图片优化

Android-Bitmap图片优化前言思考优化点案例前言A:透明度R:红色G:绿B:蓝Bitmap.Config ARGB_4444:每个像素占四位,即A=4,R=4,G=4,B=4,那么一个像素点占4+4+4+4=16位;Bitmap.Config ARGB_8888:每个像素占八位,即A=8,R=8,G=8,B=8,那么一个像素点占8+8+8+8=32位;Bitmap.Config RGB_565:每个像素占四位,即R=5,G=6,B=5,没有透明度,那么一个像素点占5+6+5=16

2021-03-27 18:03:58 327

原创 Android-Tinker热修复原理

Android-Tinker热修复原理正常的开发流程,与热修复开发流程的对比

2021-03-24 23:30:19 557

原创 NDK4 C++线程操作

NDK4 C++线程操作线程简单使用线程升级使用线程安全(互斥锁)线程安全(小例子)线程简单使用pthread_create:创建线程;参数1:线程Id,注意这里是需要一个指针;参数2:线程属性指针;参数3:函数指针----->异步任务;参数4:函数指针的参数传递 指针;pthread_t:线程Id;参数3的异步任务,是个指针函数哦,我这里写的customPThreadMethod方法;第四个参数,注意是传递给异步任务 的行参;#include <iostream>#i

2021-02-24 11:33:11 166

原创 NDK3 C++基础,容器、文件操作

NDK2 C++基础,容器、文件操作容器序列式容器-vector优先级队列-priority_queue关联式容器-set容器c++中容器,分两种类型1、序列式容器:元素的排列关系,和元素本身没有任何关系,是我们在添加的时候顺序导致的排序;2、关联式容器:根据标识,决定 添加 或者 获取 类似于java中的map、set集合;序列式容器-vector序列式容器:元素的排列关系,和元素本身没有任何关系,是我们在添加的时候顺序导致的排序;vector容器的初始化,以下三种方式可以初始化;模板

2021-02-21 13:47:26 118

原创 NDK2 C++基础,模板编程、类型转换、异常

NDK2 C++基础,模板编程、类型转换、异常模板编程(java中的泛型)类型转换普通类型转换静态类型转换动态类型转换转换失败转换成功异常模板编程(java中的泛型)template关键字T,不确定类型;class,类泛型using namespace std; 使用匿名空间 下面的string就不需要写成 std::string了栈中实例化的对象可以 . 在堆中实例化的对象用 ->//使用匿名空间 下面的string就不需要写成 std::string了using n

2021-02-02 17:01:17 132

原创 NDK1 C++基础,面向对象编程

NDK1 C++基础,面向对象编程前言类Student.h 头文件自定义的日志类Student.cpp 实现类单例-头文件MyInstance.h单例-实现文件MyInstance.cppmain.h 头文件main.cpp 头文件的实现前言前端时间出差了一段时间封闭式开发,所以未继续学习和更新,在这说声抱歉-v-类Student.h 头文件因为c++ 是面向对象的 所以可以有类;类这里默认都是private私有的;#pragma once 表示在预处理器的时候,保证只引入一次头文

2021-02-01 14:20:55 157

原创 NDK开发预热-C语言基础-指针、函数指针、可变参数的函数、预处理器、结构体、共用体

C语言基础C语言基础指针可变参数的函数函数指针预处理器结构体共用体(联合体)C语言基础从现在开始准备学习ndk开发,从基础开始学习和记录,大神勿喷,如有不对的地方,可以指出,谢谢。只学一点以后NDK会用到的C语言基础知识。C 面向过程,一个一个的执行函数,没有类,没有面向对象C++ 面向对象,思想和java的一摸一样 开始有class了指针C语言中,最重要的就是指针,很多人都说是最难的指针的概念:指针变量 和 指针 的区别:指针变量就是定义指针的标记而已,指针就是指向的内存地址。in

2020-11-04 17:58:54 180

原创 NDK开发预热-C语言入门-数据类型、布尔类型、浮点类型、字符串、数组、动态内存申请

C语言入门C语言入门数据类型C语言入门数据类型有符号(默认定义的变量,是有符号的) 和 无符 。有符号和无符号的区别: 取值范围不一样。占位打印也不一样

2020-10-31 15:52:12 145

原创 Android-沉浸式布局的玩法

Android-沉浸式布局的玩法沉浸式(状态栏和虚拟按键透明)配置文件的方式代码的方式沉浸式(修改状态栏、虚拟按键的颜色)第一种(需要修改自己的布局文件)第二种(修改系统的根布局)这类来记录两种沉浸式布局的设置方法沉浸式(状态栏和虚拟按键透明)配置文件的方式修改我们的主题配置注意区分Android版本android:windowTranslucentStatus:状态栏透明设置 4.4以上的版本设置false 4.4以下的需要设置true;<!-- NoActionBar

2020-06-16 23:06:41 457

原创 Android-事件分发机制(浅析)

Android-事件分发机制(浅析)前言前言事件分发机制是很重要的一块知识点,能熟悉事件分发有助于分析各种点击滑动失效,以及嵌套滑动问题;童鞋们,我们来一起探索吧~~

2020-06-04 11:25:34 306

原创 Android-UI绘制流程浅析

Android-UI绘制流程浅析Activity的状态AMS管理Activity的状态,系统进程和引用进程是通过aidl(binder机制)来进行通信的;Activity的创建上一篇Handler机制中我们看了ActivityThread.java类的main方法,这里我们在来看看这个类的main方法;ActivityThread的main方法这个main方法也就是程序的入口,是在孵化器进程中被调用;package android.app;......public final c

2020-05-28 22:13:41 666

原创 Android-EventBus(手写简易版)

Android-EventBus探索

2020-05-24 15:42:10 581 2

原创 Android-jetPack技术(Lifecycle、ViewModel、LiveData)

Android-jetPack技术简介借用文档上面的话Jetpack 是一套库、工具和指南,可帮助开发者更轻松地编写优质应用。这些组件可帮助您遵循最佳做法、让您摆脱编写样板代码的工作并简化复杂任务,以便您将精力集中放在所需的代码上。Jetpack 包含与平台 API 解除捆绑的 androidx.* 软件包库。这意味着,它可以提供向后兼容性,且比 Android 平台的更新频率更高,以此确...

2020-04-25 21:03:26 596

原创 Android-MVVM设计思想

Android-MVVM设计思想简介MVVM:MVVM是Model-View-ViewModel的简写,双向数据绑定,数据驱动UI;通过databinding的组件,负责将view和Model进行绑定;MVVM:内存消耗比较大,每一个对象在内存中产生一个副本,而且没刷新一次UI都会开一个线程,也比较耗电,但是开发的速度是各种模式里面最快的一种;图解apply plugin: 'com....

2020-04-25 13:54:27 382

原创 Android-ButterKnife(手写)

Android-ButterKnife简介ButterKnife是一个Android系统的View注入框架,它用到的是编译时的技术,在编译的时候生成新的class;标致上注解,在java源文件转换成class文件的过程中,通过APT(注解处理工具)产生代码;相对我上一篇IOC的博客,这里是在玩编译时,所以这里和上篇博客的反射不一样,这里是没有去用反射,这样会是的性能提升;添加依赖 i...

2020-04-18 22:16:33 220

原创 Android-IOC代码思路实现(布局注入、控件注入、事件注入)

Android-IOC思想IOC思想,现在很多框架中都有使用,,如ButterKnife,Dagge、Xutils、Retrofit等等核心思想IOC是原来由程序代码中主动获取的资源,转变由第三方获取并使原来的代码被动接收的方式,以达到解耦的效果,称为控制反转。图解IOC之前,就好像自己的事情自己主动做;IOC之后,就好像自己的事情由别人去做,相当于被动接受;代码中IOC,相信用过上...

2020-04-16 22:31:59 260

原创 Android-OkHttp源码分析、拦截器

Android-OkHttp源码分析OkHttpGitHubOkHttp官网现在4.0以后基于Kotlin…我们今天来看看3.14.2版,基于java…kotlin目前博主不熟 - -!添加依赖implementation(“com.squareup.okhttp3:okhttp:3.14.2”)我们先来看看基本使用建造者模式:一般在构建对象的过程需要配置很多很多的参数时...

2020-04-13 17:47:17 256

原创 Http网络通讯协议浅析

Http网络通讯协议浅析网络分层模型OSI七层模型的出现是为了更好的规范控制网络各层对应的设备各层对应协议TCP/IP 三次握手三次握手是建立连接四次挥手是终止连接HTTP1.1建立在TCP协议上的“超文本传输协议”http工作原理(发送请求)1、客户端与服务器建立连接;2、客户端向服务器提出请求;3、服务器接收请求,并提出请求返回相应的文件...

2020-04-03 10:58:32 170

原创 Android-RxJava2背压、生命周期

Android-RxJava背压原理、生命周期背压产生原因当上下游在不同的线程中,通过Observable发射,处理,响应数据流时,如果上游发射数据的速度快于下游接收处理数据的速度,这样对于那些没来得及处理的数据就会造成积压,这些数据既不会丢失,也不会被垃圾回收机制回收,而是存放在一个异步缓存池中,如果缓存池中的数据一直得不到处理,越积越多,最后就会造成内存溢出,这便是响应式编程中的背压(b...

2020-03-29 21:51:10 258

原创 Android-RxJava2线程切换原理

Android-RxJava2线程切换原理、背压和生命周期Observable被观察者这个类里面有1万多行代码,里面基本很多方法的重载,下面我们来看看这里面的源码。我们加上注释来看比较方便我们跟进Observable.just(1) 这个方法进去看看里面的处理,最后返回了Observable被观察者对象出来了 @CheckReturnValue @SchedulerSuppor...

2020-03-22 22:08:12 473

原创 Android-RxJava2响应式框架介绍和入门简单的使用

Android-RxJava2响应式框架简介什么是RxJava?一个可观测的序列来组成异步的、基于事件的程序的库。(简单来说:它就是一个实现异步操作的库)github地址:RxJavaRxJava 好在哪?RxJava 其实就是提供一套异步编程的 API,这套 API 是基于观察者模式的,而且是链式调用的,所以使用 RxJava 编写的代码的逻辑会非常简洁。适用场景?数据库的读写、...

2020-03-22 13:46:11 271

原创 Android-插件化-插桩式

Android-插件化架构设计简介插件化:属于动态加载技术(插件化、热修复),三种方式实现:1、插桩式;2、hook技术;动态加载技术:在应用程序运行时,动态记载一些程序中原本不存在的可执行文件并运行这些文件里面的代码逻辑。可执行文件总的来说分为两种,一种是动态链接库so,另一种是dex相关文件(dex文件包含jar/apk文件)。作用插件化作用:主要用于解决应用越来越庞大的以及功能模块...

2020-03-21 16:34:59 609

原创 记录Flutter组件

Flutter组件Flutter组件Container组件的例子代码片段Flutter组件在Flutter中,万物皆组件,一下是组件使用的例子,记录常用的组件和常用的一些属性使用Container组件的例子代码片段import 'dart:math';import 'package:flutter/material.dart';void main() => runApp(My...

2019-04-07 13:05:18 225

空空如也

空空如也

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

TA关注的人

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