
Android
文章平均质量分 88
Android
卓修武
- 程序猿
- 健身
- 看书
展开
-
Android平台下的cpu利用率优化实现
本文只是分享了Android系统下自主控制cpu频率、线程指定核心和优先级的方式,不过这些能力需要具体落实到业务场景才能够获得实际的收益。原创 2023-07-19 10:10:10 · 2663 阅读 · 0 评论 -
扒一扒抖音是如何做线程优化的
本文主要介绍了有关线程的几个方面的优化主线程创建线程耗时优化线程数收敛优化线程默认虚拟空间优化OOM优化这些不同的优化手段需要根据项目的实际情况进行选择,比如主线程创建线程优化的实现方面比较简单、影响面也比较低,可以优先实施。而线程数收敛需要涉及到字节码插桩、各种对象代理 复杂度会高一些,可以根据当前项目的实际线程数情况再考虑是否需要优化。原创 2023-03-22 14:35:53 · 667 阅读 · 0 评论 -
监控Android Looper Message调度的另一种姿势
在Android 10版本,系统为Looper类添加了专门的 Observer类用来观测Looper的消息调度。因此除了通过设置Looper对象的 printer属性外,也可以通过设置Looper类的Observer属性来实现监控,然而该功能在设计之初就只是为了观测并统计系统服务的Looper消息调度性能原创 2022-09-06 11:25:48 · 1510 阅读 · 0 评论 -
Android虚拟机线程启动过程解析, 获取Java线程真实线程Id的方式
Android虚拟机线程启动过程解析, 获取Java线程真实线程Id的方式原创 2022-09-06 11:21:59 · 1965 阅读 · 0 评论 -
Android 高版本采集系统、进程CPU使用率的方式
cpu 信息作为性能监控四大常用指标 (cpu、内存、网络、磁盘)之一,对衡量设备性能,分析、确定一些线上性能问题有着较为重要的作用。 本文简述了在Android平台下获取系统CPU使用相关信息的方式原创 2022-08-24 16:50:48 · 3150 阅读 · 0 评论 -
Android 解决 SharedPreferences 导致的ANR问题
介绍 Android 使用 SharedPreferences 导致的耗时、ANR问题,以及解决方案原创 2022-01-19 11:46:39 · 4485 阅读 · 0 评论 -
ANR监控平台设计
得物之前对于线上的ANR问题都是采用接入的bugly平台进行问题收集和平台展示的,在体验中发现,无论是提供的信息对于解决问题的有效度、或者是对ANR日志聚合,都不太符合得物实际场景的需要。因此得物在参考业界各大厂商分享的ANR监控及治理方案后,我们开始着手建设自己内部的ANR监控平台,本文主要介绍 ANR监控 平台部分的实现,端上相关信息的采集实现不做阐述。ANR 信息的处理在进行ANR日志的数据处理之前,首先整理下目前端上对于ANR问题上报的信息内容,主要包括以下几点信息ProcessEr原创 2021-09-22 14:24:06 · 1089 阅读 · 0 评论 -
基于JVMTI 实现性能监控
什么是JVMTIJVMTI 全程 JVM Tool Interface,它是Java虚拟机定义的一个开发和监控JVM使用的程序接口(programing interface),通过该接口可以探查JVM内部的一些运行状态,甚至控制JVM应用程序的执行。需要注意的是,并非所有的JVM实现都支持JVMTI。JVMTI是双通道接口(two-way interface)。JVMTI的客户端,或称为代理(agent),agent可以通过注册监听感兴趣的事件,另外,JVMTI提供了很多操作函数可以直接用来控制应用程原创 2021-07-13 10:35:19 · 4270 阅读 · 2 评论 -
设计一个“高效”的字节码插桩框架
背景在做性能监控及项目优化的过程中,不可避免地需要使用字节码插桩的来实现一些需求。比如函数体前后插桩实现 函数耗时检测Activity、Fragment 相关生命周期函数插桩,实现UI活动耗时检测Thread、ThreadPoolExecutor 构造函数调用替换,实现线程相关性能检测移除 Log 类相关的函数调用,避免不必要的日志打印行为等等当重复的进行了一些项目“字节码插桩”的相关插件的开发后,我们考虑这方面重复性的工作是否可以做进一步地简化,因为重复地进行 “新建Plugin项目”、原创 2021-06-22 16:40:25 · 552 阅读 · 0 评论 -
Android 刷机常用命令
Android 刷机常用命令线刷和卡刷的区别1.线刷和卡刷的本质区别在于recovery,刷了官方ROM的recovery.img,刷机方式就是线刷,刷了第三方中文recovery.img,刷机方式就是卡刷,线刷和卡刷的相互转换就是刷不同的recovery.img,不管是fastboot还是用超级终端,输入的命令其实都是差不多的;2.线刷是指使用USB线连接个人计算机,并在个人计算机上使用刷机软件进行刷机的行为,而卡刷则是把固件或者升级包拷贝到手机SD卡中进行刷机升级操作;3.线刷一般是官方所采原创 2021-04-21 21:21:32 · 1550 阅读 · 0 评论 -
Android 扩大View点击区域最好的方式
Android 扩大View点击区域最好的方式先给结论实现介绍先给结论 /** * 扩展点击区域的范围 * * @param view 需要扩展的元素,此元素必需要有父级元素 * @param expendSize 需要扩展的尺寸(以sp为单位的) */ public static void expendTouchArea(final View view, final int expendSize) { if (原创 2020-05-12 10:41:54 · 6153 阅读 · 1 评论 -
com.sun.tools.javac.code.Symbol$CompletionFailure: 找不到java.lang.invoke.MethodType的类文件
Andorid N 支持 Java8了,自然要使用lamda表达式体验一番,下载了 SDK 24 buildToolsVersion “24.0.0 rc2”运行项目却出错了: com.sun.tools.javac.code.Symbol$CompletionFailure: 找不到java.lang.invoke.MethodType的类文件 编译器 (1.8.0_66) 中出现原创 2016-03-25 23:52:52 · 9622 阅读 · 1 评论 -
深入Android对Java8支持的实现
本文内容来自 Jake wharton 的 Android’s Java8 Support一文,从这篇文章中你将了解Android对Java8语言特性的支持的历程;并分析了解Android在字节码层面是如何实现支持Java8语法的一个新的Java版本发布可能会带来诸多方面的变更,比如:新的语法、字节码变化、工具支持、API、JVM等,通常Android开发者关注的Android的Java...翻译 2019-04-23 08:52:10 · 4540 阅读 · 0 评论 -
手把手实现一个mini-Retrofit框架
前文本篇文章将采用循序渐进的编码方式,从零开始实现一个Retorift框架;在实现过程中不断提出问题并分析实现,最终开发出一个mini版的Retrofit框架演示一个使用OkHttp的项目Demo为了更好的演示框架的实现过程,这里我先创建了一个简单的Demo项目这个Demo项目中主要包含3个部分Json数据对应JavaEntity类项目中包装网络请求回调的Callback一个...原创 2019-04-27 08:54:11 · 263 阅读 · 0 评论 -
Android 快速获取用户通信录联系人 姓名、电话、首字母 及排序
Android快速获取通信录列表、首字母、并排序关键点只使用一个Cursor 同时获取 手机号、首字母、并排序 (200多联系人大概在20ms左右)首字母的获取根据不同版本获取方式不同,在Android5.0以上使用 phonebook_label字段,在5.0 以下使用 ContactsContract.Contacts.SORT_KEY_PRIMARY也就是sort_key字...原创 2018-04-23 17:51:57 · 2935 阅读 · 0 评论 -
RxJava 方法备忘录
RxJava 方法过滤相关 RxJava提供了filter()方法来过滤我们观测序列中不想要的值 当我们不需要整个序列时,而是只想取开头或结尾的几个元素,我们可以用take()或takeLast() 一个可观测序列会在出错时重复发射或者被设计成重复发射。distinct()和distinctUntilChanged()函数可以方便的让我们处理这种重复问题。(它会记录以及发射的值来过原创 2016-01-25 23:36:53 · 721 阅读 · 0 评论 -
Android开发踩坑之旅
在此记录一些Android开发中的踩坑记录,仅供复习和参考 问题:小米 MIUI系统 相机无法调用 Camer2 新Api的问题 过程:在运行 Android-23 Samples 中 media文件夹下的 Camera2Basic时,在模拟器 Nexus_5 上可以正常运行,当然由于是模拟器,所以没有图像,在使用真机红米Note2时。在以下代码调用时出错了: manager.o原创 2016-02-12 00:13:26 · 3670 阅读 · 1 评论 -
Activity详解(生命周期;启动模式;任务栈;状态保存)
Activity的生命周期Activity的生命周期流程在正常情况下,一个 Activity 的生命周期流程可以由下图表示 1. onCreate: Activity正在被创建,可以理解为一个Activity的入口。在这个方法中,我们通常会通过调用 setContentView (int res) 或者 setContentView(Viewview) 来设置显示的视图,之后调用findvie原创 2016-02-12 00:16:02 · 604 阅读 · 0 评论 -
View滚动帮助类ViewDragHelper解析
ViewDraHelper解析ViewDragHelper 是什么? ViewDragHelper 是Google 编写的帮助我们处理拖拽的一个帮助类,如果我们自己去处理TouchEvent事件,判断处理TouchEvent的数据,达到我们拖拽View的一个目的也是可以的,但是过程肯定是有点繁琐的,ViewDragHelper 通过处理 MotionEvent 事件,判断是否是拖拽 以及拖拽方向、原创 2016-02-23 22:20:57 · 629 阅读 · 0 评论 -
Android 图片模糊实现方式
Android 图片模糊实现方式提供两种实现图片模糊的方式RenderScript 实现public Bitmap renderBlurBitmap(Bitmap bitmap){ Bitmap outBitmap = Bitmap.createBitmap(bitmap.getWidth(),bitmap.getHeight(), Bitmap.Config.ARGB_8888);原创 2016-02-25 16:25:24 · 1206 阅读 · 0 评论 -
OKHttp 如何支持 HttpDns
使用 HttpDns 与 传统DNS 不同的是,HttpDns 是使用 Http协议去进行 dns 解析请求,将服务器返回的结果,也就是域名对应的服务器ip 作为我们发起请求的地址,替换使用域名 LocalDNS劫持: 由于HttpDNS是通过ip直接请求http获取服务器A记录地址,不存在向本地运营商询问domain解析过程,所以从根本避免了劫持问题。 (对于http内容tcp/ip层劫持,可原创 2016-02-27 18:39:39 · 2846 阅读 · 4 评论 -
Okio库 Timeout类源码解析
Timeout类的作用 Timeout类用来处理当前线程对异步任务执行的等待超时时间或截止时间,当超时或到截止时间时,抛出一个 InterruptedIOException 的异常,在 Okio 包中,处理Io流时,都需要使用到。TimeOut 主要包含 Timeout 以及AsyncTimout 类。TimeOut类内部的具体处理过程 Timeout类 使用了2种策略来处理是否应该中断等待,一原创 2016-12-10 12:14:17 · 2506 阅读 · 0 评论 -
Okio组件源码分析
Okio库 组件分析Segment Segment 是数据操作过程中,保存数据的地方,内部持有一个 限制最大为 8192 byte 的byte[]数组用来存储数据。Segment 的结构是 双向链表的结构,所以提供了 pop push 对结构的操作。Segment 采用链表的结构,内部使用数组来保存存储数据是一个数据操作的这种方案,链表使得插入删除更快,数组可以保证读取更快。Segment 中的原创 2016-12-14 14:32:17 · 623 阅读 · 0 评论 -
Android开发中的黑科技
1.Stetho 使用facebook的Stetho可以让你在chrome浏览器直接查看你所有的网络请求、数据库、SharedPreference ,方便很多。 2. Android Studio 秒级编译 阿里巴巴开源的freeline 是一款针对Android 平台的增量编译工具,充分利用缓存文件,在几秒内迅速对代码的改动编译并部署到设备上,不过第一次有点慢。原创 2016-12-14 15:33:54 · 1414 阅读 · 0 评论 -
Android 获取mp4文件中任意时间点的帧图片(MediaMetadataRetriever )
#工作中遇到,需要获取一个本地mp4文件任意时间点的图片。刚开我始是使用 Android 提供的 MediaMetadataRetriever 来实现,不过鼓捣一阵发现,其实系统的这个类并不能满足我的需求,因为 MediaMetadataRetriever 只能获取 你指定时间的附近的关键帧(Key frame) 一开始的代码如下 java MediaMetadataRetr原创 2017-04-27 21:05:33 · 5430 阅读 · 1 评论 -
ffmpeg 常见需求命令 (贴图、混音等)
添加水印watermark_multiple.bashffmpeg -i src.mp4 -i watermark.png -i watermark.png -filter_complex "overlay=5:5,overlay=x=W-w:y=5" watermarket_multiple_output.mp4添加文字 同时添加水印with_font.bashffmpeg -i src.mp4原创 2017-07-03 18:17:22 · 1574 阅读 · 0 评论 -
Android stuido Gradle模式的使用
1. gradle模式如何自动导入jar包,及其文档 注释的在当前Modle的 build.gradle 下,加上 apply plugin:'idea' 表示使用idea插件在加上idea{module { downloadJavadoc = truedownloadSources = true}}完整的 http://mav原创 2015-10-01 12:59:38 · 608 阅读 · 0 评论