Android
文章平均质量分 90
linhaosheng123456
这个作者很懒,什么都没留下…
展开
-
解决线上概率性异常 TransactionTooLargeException
解决线上概率性异常 TransactionTooLargeException 解决方法原创 2022-08-25 17:52:56 · 629 阅读 · 3 评论 -
记一次 lottie-android导致exoplayer无法播放事故排查
公司最新的版本中在底部Tab中需要加入Lottie动画,于是在github上找到了 airbnb开源的lottie-android动画,使用的是最新版本(5.1.1),然后根据使用文档,在项目中接入,测试发现也是正常使用的,公司的App中有用到了视屏播放器功能,于是使用的是Google开源的Exoplayer播放器,项目接入的比较早,使用的版本是2.9.1,目前最新版本是r2.17.1。在App版本开发和测试通过后,就发布上线,发布后一天,在App的后台反馈平台,有用户反馈说App内的使用播放画面是黑屏的。原创 2022-06-07 20:03:42 · 1748 阅读 · 0 评论 -
pocketSphinx Android 离线语音识别
前几天有个朋友找到我说是否有非第三方(讯飞、百度)的语音识别方案,之前对这块的了解是语音识别基本都是调用这种第三方的方案。听完之后,谷歌发下有两种方案.原创 2022-05-17 15:25:11 · 4764 阅读 · 1 评论 -
Android 编译速度优化方案
在项目体量越来越大的情况下,编译速度也随之增长,目前在以下配置的机器全部编译一次少则5分钟,多则10多分钟,严重影响开发效率原创 2022-04-10 21:23:41 · 5390 阅读 · 0 评论 -
Kotlin 分享
Kotlin 分享一 kotlin简介Kotlin是由JetBrains公司(IDEA开发者)所开发的编程语言,其名称来自于开发团队附近的科特林岛。多平台开发JVM :Android; Server-SideJavascript:前端Native(beta) :开发原生应用 windows、macos、linuxSwift与Kotlin非常像1. kotlin 发展历程2. java 发展历程3. jvm 语言的原理JVM规范与java规范是相互独立的只要生成的编译文件匹配JV原创 2022-03-29 19:46:43 · 2733 阅读 · 0 评论 -
Android 4.4关机流程
基于Android 4.4得源码分析得。最近有客户反馈Android得关机流程出现关机logo显示很久得问题,所有今天看下Android得关机流程(项目是基于4.4版本得)长按power降会出现关机选择框源码在PhoneWindowManager.java中得interceptPowerKeyDown进行处理。 private void interceptPowerKeyDow...原创 2019-06-18 17:23:03 · 661 阅读 · 0 评论 -
OkHttp得拦截器
继上篇文章OkHttp得拦截机制,本篇文章了解下OkHttp得各个拦截器得代码实现。所有得拦截器都实现了Interceptor接口public interface Interceptor { Response intercept(Chain chain) throws IOException; interface Chain { //发起得请求 Request ...原创 2019-06-25 20:20:57 · 242 阅读 · 0 评论 -
Android 屏幕适配
说Android得屏幕适配方案,先说下基础知识。屏幕尺寸:屏幕的对角线,如一台小米电视49寸说的就是电视对角线长度是49寸(1英寸=2.54厘米)分辨率:1920×1080指纵向1920个像素点,横向1080个像素点屏幕像素密度(DPI):指每一英寸长度中,可显示输出的像素个数,假如一英寸里面有160个像素,这个屏幕的像素密度就是160dpi,DPI的数字受屏幕尺...原创 2019-06-11 20:00:11 · 742 阅读 · 0 评论 -
BroadCast 注册广播得源码分析
基于Android4.4 源码分析 Android Broadcast 得registerReceiver (注册过程)注册广播往往是在Activity/Service中调用registerReceiver(方法),Activity 和Service 都是间接继承Context抽象类得,真正执行得是ComtextImpl类。看先ContextImpl.java中得registerRecei...原创 2019-06-04 18:14:13 · 195 阅读 · 0 评论 -
OkHttp得拦截机制
现在得android网络请求框架中使用得最多得还是okhttp,okhttp得拦截机制很巧妙,所以就看下是如何设计得。一般得使用例子如下。OkHttpClient okHttpClient = new OkHttpClient.Builder() .build();Request request = new Request.Builder() .url(...原创 2019-06-20 17:21:44 · 347 阅读 · 0 评论 -
Glide生命周期管理
Android开发中经常使用Glide来加载图片,一般得使用如下Glide.with(this).load("http://abc.com/1.png").into(imageView);Glide就会完成图片得下载,缓存,缩放,显示等流程。其中应用进入后台,图片会暂停加载得策略,所以就看下Glide是如何实现生命周期得管理得。先看下Glide.with(this)得源码实现,由于传...原创 2019-06-10 17:59:56 · 379 阅读 · 0 评论 -
Dart
最近Flutter 使用的人很多,社区和github上得关于Flutter得讨论也在不断得增加,作为Flutter执行得背后执行语言,和虚拟机,Dart功不可没,所以看下Dart有哪些令人眼前一亮得特性。Dart是AOT 编译得,编译快速,可预测本地代码,同时也可以是JIT编译,可以做到开发周期快,应用运行流畅。Dart可以轻松得做到创建60fps运行得流畅动画和转场。Dart是可以在...原创 2019-06-10 15:18:12 · 173 阅读 · 0 评论 -
LruCache得源码解读
LruCache是Android sdk提供得一个缓存类,比如说在实现图片得三级缓存得时候就会用到,LruCache使用得是LRU缓存策略,LRU就是最近最少使用(least recently used),当超出缓存得时候,就优先回收链表中最近最少使用得那个数据。看下LruCache得属性public class LruCache<K, V> { private fi...原创 2019-06-14 20:56:52 · 338 阅读 · 0 评论 -
Fragment得使用
Fragment作为Android最基本,最重要的基础概念之一,在开发中经常会和他打交道,所以了解下Fragment得使用和原理。Fragment是Android 3.0 之后提出得,有着一下几个优点。模块化(Modularity):我们不必把所有代码全部写在Activity中,而是把代码写在各自的Fragment中。 可重用(Reusability):多个Activity可以重用一个F...原创 2019-06-02 21:36:53 · 245 阅读 · 0 评论 -
RecyclerView 源码分析
RecyclerView 整体用到得设计模式有一下:通过桥接模式,使RecyclerView 将布局方式独立成LayoutManager,实现对布局的定制化。通过组合模式,使RecycleView通过dispatchLayout对Item View进行布局绘制的。通过适配器模式,ViewHolder将RecycleView与ItemView联系起来,使得RecycleView方便操作I...原创 2019-05-29 22:33:25 · 520 阅读 · 0 评论 -
Handler源码解析
日常得开发中经常使用到Handler,所以就看下源码,了解下运行得原理。经度使用方法,这里不考虑内存得泄露。private static final int TAG = 0x99;final Handler mHandler = new Handler(){ @Override public void handleMessage(Mess...原创 2019-05-31 21:51:46 · 382 阅读 · 0 评论 -
Android得启动模式
Android得启动模式launchMode 分为四中:standar : 默认W为该启动模式,每当发送一个intent请求打开activity时,都会创建一个新得activit实例。比如 Activity A,B, C, D 四个Activity,当前栈为 A -> B -> C -> D (D 为栈顶) ,当在D 得时候启动B ,那么返回栈得顺序就变成A...原创 2019-06-05 12:28:48 · 200 阅读 · 0 评论 -
EventBus 源码解析
EventBus 使用简单而且功能非常强大,内部实现原理也比较简单。EventBus得流程图:从图片看,事件得发布者只需要将事件post 到EventBus 中,再又事件发给订阅者。使用EventBus得时候,首先先注册:EventBus.getDefault().register(this);看下源码实现。 /** Convenience singleton ...原创 2019-05-30 21:51:50 · 428 阅读 · 0 评论