自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

zsjlovesm521的博客

博主很懒 什么都没留下

  • 博客(50)
  • 收藏
  • 关注

原创 Android 统一捕获异常

Android 统一捕获异常添加统一处理异常的逻辑,并且可使应用不出现崩溃的现象。//核心类object Global { private const val TAG = "Global" private val handler = Handler(Looper.getMainLooper()) //这种方式会使主线程中looper的调用栈加深一层。出现异常的时候catch住并再次主动调用 Looper.loop() fun loop() { handle

2021-04-01 15:14:46 223

原创 动态修改retrofit的host地址

动态修改retrofit的host地址实现方式来自bennyhuo的破解Retofit 慕课网课程地址https://www.imooc.com/learn/1128测试代码及核心类//可直接在Android stuidio项目test中运行测试public class ExampleUnitTest { public final static String API_URL = "https://api.github.com"; public final static String

2021-03-19 18:24:23 1207

转载 Android 颜色透明度换算

转载地址:http://blog.csdn.net/jabony/article/details/52804296 每次开发的时候,UI在设计图中标注的颜色都是类似于#FF0000(红色),这倒没什么,但是呢后面却标注了30%的透明度,这下抓狂了,透明度怎么计算?不用着急,不用你算,收藏我这篇文章即可。颜色简介Android中的颜色值通常遵循RGB/ARGB标准,使用时通常以“#”字符开头,以16进制表示。常

2020-09-19 15:59:18 696 1

原创 RBGA8888转nv21

RBGA8888转nv21由于近期处理ImageReader.OnImageAvailableListener中onImageAvailable(reader: ImageReader?)里面的ImageReader数据,需要将其转换为nv21数据时遇到了一些问题,记录一下解决方法和转换思路。下面的类提供了转换的核心方式和思路。class ImageUtil { companion object { /** * Image中的rgba8888转为nv21 * @param

2020-07-23 15:50:30 812

原创 ResUtil工具类

/** * 根据资源id获取数据的工具类 */public class ResUtil { public static String getString(@StringRes int resId) { return AppDelegate.getInstance().getContext().getResources().getString(resId); ...

2020-04-22 07:51:08 484

原创 设计模式的理解

1工厂模式1.简单工厂解决对象创建—不在主体代码中new对象。当需要通过参数来判断并创建不同对象的时候就可以使用简单工厂。2 策略模式定义了算法家族,分别封装起来让他们之间互相替换,让算法的变化不会影响到使用算法的客户。不同的时间应用不同的业务规则就可以使用。Java设计模式透析之 —— 策略(Strategy) https://blog.csdn.net/guolin_blog/a...

2020-03-25 18:20:50 538

原创 Android 由于系统回收了Activity导致的fragmentUI错乱或数据加载异常等问题的处理。

Android 由于系统回收了Activity导致的fragmentUI错乱或数据加载异常等问题的处理。背景:近期厂商反馈的进程长时间在后台,再次进入主页会出现数据加载不出来的情况。复现办法:方法1.进入开发者选项->不保留活动(用户离开后即销毁每个活动)方法2.# 找到进程PIDadb shell ps | grep your.app.package# 结果类似下面这样...

2020-01-18 15:53:30 769

转载 JAVA字符串格式化-String.format()的使用

常规类型的格式化String类的format()方法用于创建格式化的字符串以及连接多个字符串对象。熟悉C语言的同学应该记得C语言的sprintf()方法,两者有类似之处。format()方法有两种重载形式。format(String format, Object... args) 新字符串使用本地语言环境,制定字符串格式和参数生成格式化的新字符串。format(Locale local...

2020-01-08 17:06:24 176

原创 ThreadUtil线程相关工具类

*** 线程相关工具类*/public class ThreadUtil { /** * rxjava实现在UI线程执行 */ public static void runOnUI(ThreadTask task) { Observable.just(task) .observeOn(...

2019-12-16 11:25:23 322

原创 深入理解JVM—类加载 part3

Demo18 package com.shengsiyuan.jvm.classloader; public class MyTest18 { public static void main(String[] args) throws Exception { MyTest16 loader1 = new MyTest16("load...

2019-11-12 19:18:59 1019

原创 深入理解JVM—类加载 part2

Demo11 package com.optimize.learnJVM.classloader; public class MyTest11 { public static void main(String[] args) { System.out.println(Child3.a); Child3.doSomeThing...

2019-11-12 19:12:18 223

原创 深入理解JVM—类加载 part1

深入理解JVM—类加载 线索Cues 笔记Notes 基础知识点 一、类加载: 1.在java代码中,类型的加载、连接、初始化过程都是在程序运行期间完成的。 2.提供了更大的灵活性,增加了更多的可能性。 备注:类型:包括class、interface、enum,不是对象的概念(new) ...

2019-11-12 19:08:08 169

原创 设计模式的学习记录

2019-10-21 10:48:43 135

转载 解决AndroidStudio出现 SSL peer shut down incorrectly 问题

AndroidStudio 编译时出现如下问题 SSL peer shut down incorrectly 或者某些jar包下载不下来,一般是因为墙的原因导致的。这时候我们就需要配置镜像来解决这个问题。(为了提高jar包的下载速度也可以配置)配置的方法就是在根build.gradle中添加镜像仓库,一般我们选择阿里的 http://maven.aliyun.com/nexus/content/g...

2019-10-08 11:30:11 771

原创 Android RatioConstraintLayout工具类

自定义布局文件/** * 可以设置自身宽高比的ConstraintLayout。 * 宽高比的确定是根据横竖屏确定的,如果是横屏的话就根据高度和比例确定宽度,如果是竖屏就根据宽度和比例确定高度。 * 默认有点击缩放效果,可以设置是否有缩放效果。 */public class RatioConstraintLayout extends ConstraintLayout { pr...

2019-09-23 14:46:55 264

原创 Android音频焦点的问题与闪屏页实现方法

背景:今天为了修复厂商反馈的关于音频焦点交互的问题。问题1:(听伴是我们的应用名称)听伴播放->按下静音键->听伴处于暂停状态并主机静音->按下语音键/打电话-退出语音/挂断电话->听伴抢source并播放。正确逻辑应该是听伴不抢source并且不播放。分析1:通过分析log及与对方开发确认。系统方的静音是一个音源,静音去抢夺了音频焦点,导致听伴失去焦点后执行pause...

2019-09-05 17:25:21 204

原创 Android 关于类重写toString的坑

Android 关于类重写toString的坑背景:厂商反馈通过外调sdk播放器回调获取到的void onPlayMusic(Music music)中的music对象为null。得知这个问题之后添加了log通过demo测试,发现客户端和服务端都可以获取到music中的属性。无法复现此问题。继续跟厂商沟通对方使用如下方式显示log。Log.d(“TAG”, " — mPlayStateLis...

2019-08-16 09:08:00 558

原创 Android 中英文切换及遇到的问题

Android 中英文切换及遇到的问题背景:近期由于项目上的需求接受到了一个中英文切换需求。只需要在切换中英系统语言的时候改变app的名称为中文或英文就可以。关于如何实现这些可以参考如下文章:实现中英文切换的方法:Android app切换语言、国际化的纠缠: https://blog.csdn.net/qq_36255612/article/details/79651021androi...

2019-08-03 16:40:17 2784

转载 Linux常用命令大全

Linux常用命令大全1.Linux管理文件和目录的命令命令功能命令功能pwd显示当前目录ls查看目录下的内容cd改变所在目录cat显示...

2019-07-03 14:31:28 222

转载 各种设计模式的UML类图

一、单一职责原则     就一个类而言,应该仅有一个引起它变化的原因。     如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能会削弱或者抑制这个类完成其他职责的能力。这种耦合会导致脆弱他的设计,当变化发生时,设计会遭受到意想不到的破坏;软件设计真正要做的许多内容就是发现职责并把那些职责相互分离。...

2019-07-01 10:55:53 11233 2

转载 十分钟过一遍Kotlin知识点

转载自:http://www.sohu.com/a/239604477_211120 这是团队内部分享的Kotlin的知识点,还在不断完善的阶段。团队用Kotlin作为后端开发语言已经一年多,知识点还在不断的挖掘规范中。期待和更多的喜欢Kotlin的同学们一起讨论。 1:变量声明 val:只读变量,可以之后初始化,不过如果未初始化之前该变量无法使...

2019-06-21 11:49:13 270

转载 转载:史上最全的Android studio 的快捷键 MAC 和Win版本

功能描述 keymap对应名字 Mac Win/Linux 提示错误解决方案 Show Intention Actions option + enter alt + enter AS配置界面 Preferences command + , control+alt+S 工程项目配置界面 Project Structure ...

2019-06-14 11:08:20 202

原创 将模块动态配置为Application和Library

将模块动态配置为Application和LibraryApplication作为应用程序启动:apply plugin: ‘com.android.application’Library作为库工程被引用:apply plugin: ‘com.android.library’Application与Library切换首先我们可以在gradle.properties中声名一个boolean类型...

2019-06-13 18:48:58 1304

原创 Android 状态栏的管理

android4.4以上沉浸式状态栏和导航栏实现以及Bar的其他管理。推荐使用的mmersionBarhttps://github.com/gyf-dev/ImmersionBar?tdsourcetag=s_pcqq_aiomsghttps://www.jianshu.com/p/2a884e211a62自己使用的工具类public class StatusBarUtils { ...

2019-06-03 10:03:44 315

转载 Manipulation tasks(操作task)

基础Java项目有一组有限的task用于互相处理生成一个输出。 classes是一个编译Java源代码的task。可以在build.gradle文件中通过脚本很容易使用classes。这是project.tasks.classes的缩写。在Androi...

2019-05-20 09:39:17 169

转载 Android Gradle 完整指南

转发:原文地址 https://www.cnblogs.com/laughingQing/p/5855774.html Android Gradle 完整指南 为什么需要学Gradle?Gradle 是 Android 现在主流的编译工具,虽然在Gradle 出现之前和之后都有对应更快的编译工具出现,但是 Gradle 的优势就在于它是亲儿子,...

2019-05-05 10:27:19 1081

转载 adb命令模拟按键事件 KeyCode

转发:adb命令模拟按键事件 KeyCode 例子://这条命令相当于按了设备的Backkey键adb shell input keyevent 4    //可以解锁屏幕adb shell input keyevent  82 //在屏幕上做划屏操作,前四...

2019-04-17 15:43:02 532

原创 Part 10 App稳定性优化

Part 10一 如何提升App的稳定性1、正确认识稳定性是大问题,Crash是P0优先级的稳定性可优化面很广(Crash、卡顿、耗电等)2、稳定性纬度Crash纬度性能纬度(启动速度、卡顿、电量、流量、内存等)业务的高可用纬度3、稳定性优化概览重在预防、监控必不可少思考更深一层、重视隐含信息长效保持需要科学流程二 高Crash率的破解之道1、Crash相关指标UV、...

2019-04-09 10:50:49 712

原创 part 9 App瘦身优化

Part 9 App瘦身优化一 瘦身优化及APK分析方案1、瘦身优势最主要是转换率:下载转换率(提高用户搜索后的下载几率)头部App都有Lite版渠道合作商的要求2、Apk组成代码相关:classes.dex资源相关:res、asserts、resources.arscSo相关:lib3、Apk分析ApkTool,反编译工具官网:https://ibotpeaches.g...

2019-04-09 10:48:33 320

原创 part 8 App电量优化

Part 8 App电量优化一 电量优化介绍及方案选择1、正确认识电量重视度不够:开发中一直连着手机电量消耗线上难以量化2、方案介绍设置界面-耗电排行直观,但是没有详细数据,对解决问题没有太多帮助找特定场景专项测试(如在详情页中进行一段时间的操作)注册电量相关的广播ACTION_BATTERY_CHANGED获取电池电量、充电状态、电池状态等信息价值不大:针对手机整体的...

2019-04-09 10:45:41 1174

原创 part 7 App网络优化

Part 7 App网络优化一 网络优化从哪些纬度开展1、网络优化介绍正确认识1、网络优化需要从多个纬度展开2、仅仅重视流量不够3、网络流量消耗量:精准4、整体均值掩盖单点问题(如:用户反馈app费流量,只统计流量消耗,不统计使用时长不好断定,还有前后台消耗流量的区分)5、网络相关监控要全面6、粗粒度监控不能帮助我们发现、解决深层次问题2、网络优化纬度流量消耗一段时间...

2019-04-08 12:02:08 635

原创 part 6 App线程优化

Part 6 App线程优化一 Android线程调度原理剖析1、线程调度原理任意时刻,只有一个线程占用CPU,处于运行状态多线程并发:轮流获取cpu使用权JVM负责线程调度:按照特定机制分配CPU使用权线程调度模型分时调度模型:轮流获取、均匀分配cpu时间抢占式调度模型:优先级高的获取,JVM采用2、Android线程调度nice值Process中定义值越小,优先级...

2019-04-03 18:05:42 441

原创 part 5 App卡顿优化

Part 5 App卡顿优化一 卡顿介绍及优化工具选择背景:对用户来说:很多性能问题不易被发现,但是卡顿很容易被直观感受对开发者来说:卡顿问题难以定位卡顿问题难在哪里:产生的原因错综复杂:代码、内存、绘制、IO?不易复现:与用户当时场景相关1、CPU Profiler图形的形式展示执行时间、调用栈等信息全面,包含所有线程运行时开销严重,整体都会变慢使用方式Debug.s...

2019-03-22 11:00:56 633

原创 Part 4 App布局优化

Part 4 App布局优化化一 Android绘制原理及工具选择1、绘制原理硬件CPU负责计算显示内容(视图的创建,布局计算,图片解码,文本绘制等)GPU负责棚格化(UI元素绘制到屏幕上,也就是将一些组件,如button,bitmap拆分成不同的像素进行显示,然后完成绘制,比较耗时)原则16ms发出VSync信号触发UI渲染大多数的Android设备屏幕刷新帧率:60Hz...

2019-03-14 11:44:06 287

原创 part 3 App内存优化

Part 3 App内存优化一 内存优化介绍及工具选择1、内存优化介绍内存问题内存抖动:锯齿状、GC导致的卡顿内存泄漏:可用内存减少、频繁GC内存溢出:OOM、程序异常2、工具选择Memory Profiler实时图表展示应用内存使用情况识别内存泄漏、抖动等提供捕获堆转储、强制GC以及跟踪内存分配的能力总结:方便直观、线下平时使用Memory Analyzer(M...

2019-03-06 11:45:27 1549

原创 Part 2 App启动优化

Part 2 App启动优化一 App启动优化介绍1、背景用户的第一体验,八秒定律(70%用户放弃等待)2、启动分类App startup time官方教程(https://developer.android.google.cn/topic/performance/vitals/launch-time)冷启动耗时最多,衡量标准ClickEvent(用户点击) -&gt...

2019-02-26 10:15:22 775 3

原创 Part 1 App性能概览与平台化实践

Part 1 App性能概览与平台化实践写在前面的话主要用于记录慕课网中的Top团队大牛带你玩转Android性能分析与优化课程的笔记,便于以后查看,课程很精彩。自己一边学习一边整理笔记,会慢慢更新的。一 性能优化中可能遇到哪些难题1.性能表现差2.线上问题无从追查3.性能优化的长期开销大4.总结1.性能表现差app启动慢、卡顿、丢帧、耗电、网络请求慢(用户可以感知到的)...

2019-02-22 12:10:27 658

原创 Android aidl接口设计不合理导致的数据异常

Android aidl接口设计不合理导致的数据异常厂商反馈使用我们的外调sdk获取数据出现进度progress一直显示4294967295,log如下图:我们的外调sdk通过aidl的方式与app进行通信。其中有一个播放回调接口onProgress(Music music,long progress)传递Music和进度progress给客户端显示。当我们对Music类中的字段进行拓...

2019-01-16 19:35:57 633

原创 Android 打开输入法,中文模式没有候选栏的问题

Android 打开输入法,中文模式没有候选栏的问题今天厂商反馈车机上的我们的app输入法中文状态下没有候选框,如下图:通过跟系统方沟通发现是EditText中android:imeOptions = "flagNoExtractUi"属性导致的。经过测试发现使用flagNoFullscreen属性可以的预期的效果,app侧修改此问题可以使用这种方式。系统方修改此问题的话就需要查明为什...

2018-12-27 18:44:11 830

原创 Android 全面屏手机view出现绿色边框

Android 全面屏手机view出现绿色边框在公司的华为P20手机上出现此情况,参考了https://my.oschina.net/u/3959253/blog/1941582发现好像其他的全面屏手机如P20、米8、三星8等Android 8.1系统都出现此问题。出现问题后效果如下图:步骤:1、打开Activity界面且有一个返回按钮如图。2、使用了qq分享功能,分享至群或者好友,返...

2018-12-18 11:02:52 4941 4

空空如也

空空如也

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

TA关注的人

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