自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 解决使用HttpsUrlConnection请求https出现连接未复用的问题.

当没有现成的答案时, 通过源码排查问题会让你恍然大悟. 处理问题原来就是这么的简单.

2022-08-30 16:14:19 857 1

原创 HarmonyOS实战:自定义view

一、自定义组件鸿蒙自定义view的实现方式是继承Component、实现DrawTask接口。然后在构造函数里面调用addDrawTask(this)。代码如下:public class View extends Component implements Component.DrawTask { protected Context mContext; /** * This view is visible. * Use with {@link #setVisibi

2021-09-10 13:35:10 760

原创 HarmonyOS实战:手势事件处理

一、Android手势处理一般的触摸事件,如move,down,up等,通过重写onTouchEvent()方法,来实现响应触摸事件的处理。但是长按、双击、单击、滑动等事件则需要借助GestureDetector来处理,GestureDetector很好的封装了这些事件的处理。1、定义GestureDetector GestureDetector mGesture = new GestureDetector(getContext(), new CustomGesture());privat

2021-09-03 13:42:13 2057

原创 HarmonyOS实战:改造Android项目代码使其可以在鸿蒙项目上运行

今年以来,鸿蒙系统的推出如火如荼,为了迎接新的事物的到来,公司也加速了鸿蒙项目的开发。由于鸿蒙项目的开发也是使用Java的开发,作为Android项目的负责人,自然而然成为了此次鸿蒙项目研发的主力。一、改造方式下面总结一下怎么在Android项目的基础上研发鸿蒙项目。由于采用的都是Java语言编写程序,所以Android程序与鸿蒙程序主要是framework层API不一样,改造的点是应用层API的调用上。一开始的时候,复制Android代码到鸿蒙项目上,逐个类的修改代码,这种...

2021-08-27 11:54:24 3599 1

原创 HarmonyOS实战:线程间通信

Android线程间通信是通过Handler来实现的,Harmony则是通过EventHandler。1、Android线程间通信机制首先,looper、handler、messagequeue三者共同实现了android系统里线程间通信机制。如在A、B两个子线程之间需要传递消息,首先给每个子线程绑定一套handler、looper、messagequeue机制,然后这三个对象都与其所属线程对应。然后A线程通过调用B线程的Handler对象,发送消息。这个消息会被Handler发送到B线程的mess

2021-08-20 11:27:03 866

原创 Android使用@IntDef注解替代枚举

Android官方不推荐使用枚举,因为使用枚举占用内存大,相比于静态常量Enum会花费两倍以上的内存。因此就有另一种方式来替代枚举类的使用,那就是@IntDef注解。枚举的理解首先谈谈对枚举的理解,虽说平时用枚举不是很多,在某些情况下还是会用到枚举的。1、枚举是某个类的有限集合,它的对象个数不可由程序员增减,它的对象在一个枚举类生成的时候已经确定。2、枚举可以避免程序调用者使用了系统规定之外的变量,造成未知错误。比如程序需要使用第三方SDK,传入了SDK未能处理的变量,造成SDK异常错误,如

2021-03-30 13:35:55 1331

原创 APP内存优化之JVM与GC基础

JVM内存管理JVM内存数据区域分布如下图:各个区域存放的数据类型如下图:1、线程私有区域程序计数器PC:相当于一个执行代码的指示器,用来确认下一行执行的代码的地址;每个线程都有一个程序计数器;该区域不会发生OOM。虚拟机栈:我们平时说的栈就是这块区域,java虚拟机规范中定义了outofmemory和stackoverflow异常。本地方法栈:native方法,j...

2019-06-04 20:45:23 277

原创 Android UI绘制优化方案

过度绘制优化(主要减少GPU工作量)(1)什么是过度绘制GPU的绘制过程,就跟刷墙一样一层层的进行,16ms刷一次。这样就会造成图层覆盖的现象,即无用的图层还被绘制在底层,造成不必要的浪费。(2)GPU过度绘制的几种情况a、自定义控件中,ondraw做了过多重复绘制。b、布局层次太深,重叠性太强。用户看不到的区域,GPU也会渲染,导致耗时增加。(3)过度绘制查看工具查看...

2019-06-01 09:36:04 342

原创 UI绘制优化之布局渲染流程与原理

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

2019-05-30 20:22:05 577

原创 APP启动优化之黑白屏问题

很多APP启动时,会出现一会白屏或者黑屏的现象:1、白屏 <style name="AppTheme" parent="Theme.AppCompat.Light"> 2、黑屏 <style name="AppTheme">(在以前的老版本上有效,现在的版本默认使用透明处理了) 产生的原因是app启动时执行了耗时的操作,用户体验很不好,为了避免这种情况的发生,有两...

2019-05-28 21:25:48 240

原创 APP启动优化之启动流程

系统的启动流程1.打开电源 引导芯片代码加载引导程序Boot Loader到RAM中去执行2.BootLoader把操作系统拉起来3.Linux 内核启动开始系统设置,找到一个init.rc文件启动初始化进程4.init进程初始化和启动属性服务,之后开启Zygote进程5.Zygote开始创建JVM并注册JNI方法,开启SystemServer6.启动Binder线程池和S...

2019-05-26 09:46:29 170

原创 ADB查看CPU架构信息

查看连接的设备adb devices设备列表:List of devices attached T7G0215603005212 deviceemulator-5554 device连接某个设备adb -s T7G0215603005212 shell 进入该设备的shellshell@HWGRA:/ $ 查看CPU架构信息ca...

2019-02-20 11:05:36 7954

原创 git 统计两个不同版本代码修改行数

sourceTree 点击命令行模式,输入以下命令:1、统计标签tag1、tag2之间的代码修改的行数git log tag1..tag2 --pretty=tformat: --numstat | gawk '{ add += $1 ; subs += $2 ; loc += $1 + $2 } END { printf "added lines: %s removed lines : ...

2018-11-03 14:03:29 11014

原创 Android Studio混淆打包自动删除log打印代码

1、为什么要这么做我们一般会对log打印设置开关,debug模式打开方便调式开发,Release模式发布时关闭。APP发布后都会交给第三方进行安全扫描,往往会扫描出信息漏洞,因为打印的代码依然存在。主要包含:android.util.Log类的打印; System.out.println();Android开发一般不使用这种打印日志方式。 java.lang.Exception, e....

2018-10-25 10:26:00 2508

空空如也

空空如也

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

TA关注的人

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