
android
文章平均质量分 54
chenrunhua
这个作者很懒,什么都没留下…
展开
-
照片墙10w以上张照片梳理,照片列表、多选上优化设计及实践
1. 背景第一期优化了加载效率,比如合理增加并发线程数,提升快速滑动缩略图等待,因为使用测试账号数据比较少(不超过1W),只对当前测试出现的问题进行点对点上的优化。对大数据的照片,出现新上传的照片显示很慢,多选照片操作卡顿。缺少没有专门针对大数据照片测试,没能发现旧的代码上及加载机制上的问题,导致这块优化缺失,本期专项对大数据照片进行分析及优化,优化前后的效果见末尾屏幕录制的视频所示。2. 照片墙原有业务流程整体的业务流程比较多,交互比较繁琐。3.优化措施具体优化措施..原创 2022-03-15 11:01:34 · 807 阅读 · 1 评论 -
纪念相册的照片列表模块业务及模块优化
背景纪念相册在打开后,列表下拉或上拉,频繁卡顿;在界面停止不动的情况,容易出现概率性崩溃,列表如下分析纪念相册主要由2部分组成:头部图片列表动画播放及列表图片组成优化根据以上分析的结果来制定优化方案如下所示:以上的优化的接口可达到以下的目的:减少80%以上的网络请求次数,降低用户网络流量损耗,提升服务器的单用户可负载能力 减少80%以上列表刷新次数,大幅降低开辟和销毁新内存次数,降低内存抖动,避免OOM 消除了列表的卡顿崩溃没有发生...原创 2021-10-25 16:33:19 · 190 阅读 · 0 评论 -
照片墙时间轴快速拖动的加载优化
1. 背景照片墙的右边有个时间轴,可以快速下滑定位到某天,如下图所示:快速拖动到某个位置,需要等待9s左右才开始加载第一张图片2.分析 在当前界面加载完后,稍微往上拉或下拉时,上面有好几行的预览图已被加载;即快速拖动到某天,但是预览图仍然在加载当前可见区域外的view的预览图;因此是否可以中断当前的所有的加载任务,当时间轴停下来时立马加载当前可见区域预览图?3.优化3.1 移动立即停止加载在时间轴被移动的时候,立即暂停glide的所有加载,这个可以通过调用...原创 2021-08-10 11:35:23 · 362 阅读 · 0 评论 -
Glide及okhttp配置优化,开启多线程大幅提升加载速度
1. 背景app的照片墙功能中,满屏是小的图片加载速度是惨不忍睹2. 分析原创 2021-08-06 11:15:32 · 4000 阅读 · 0 评论 -
Glide 4.11.0版本在访问失败的情况下,会二次重试
1. 背景项目使用Glide作为图片加载控件,自定义ModelLoader2. 问题在自定义DataFetcher中,发现loadData在失败时,再自动调用这个方法,因此被加载了2次;原先是在这边添加失败重试的,现在是导致多次调用,重试多次。3. 排查3.1在自定义ModelLoader添加log发现这个方法被调用2次,即加载的任务被加载到队列有2次。3.2 对比图片加载成功和失败 在成功加载时,在自定义DataFetcher的方法loadData只被调用一次...原创 2021-08-04 15:46:49 · 2601 阅读 · 1 评论 -
照片墙性能分析
1.背景移动Android端照片墙跟竞品比较在图片很多的情况,加载的速度及图片显示的比较慢,如下图所示2.分析照片墙的显示拆解为2大模块流程,先是分页拉取图片列表,然后拉取可见区域图片的预览图,然后显示。为了定位到底是哪一步出现问题,下面将进行以下的测试。2.1列表加载性能在当前的图片列表的上面添加个文本显示框,加载图片列表就显示其的图片id部分信息,这样可以区分取到底是没有拉取图片列表的还是没有拉取图片的预览图的问题。...原创 2021-07-07 18:17:38 · 270 阅读 · 2 评论 -
一刻相册反编译及分析
1.反编译应用商店下载最新版本一刻相册apk,使用jadx工具反编译1.1代码信息1.1.1编程语言使用kotlin,使用okhtt3p作为网络访问库1.1.2框架使用谷歌官方的jetpack的mvvm模式1.2图片加载控件信息1.2.1 照片墙使用了开源控件glide作为图片加载控件,我们也是使用glide作为图片加载控件1.2.2照片列表的item的view是自定义并继承ViewGroup1.3列表加载信息根据反编译的信息,就看到一个“fetchCloudList原创 2021-07-07 17:58:49 · 671 阅读 · 0 评论 -
整理下工作中遇到特殊的业务、难点解决
最近被面说说工作亮点,我当时是一时懵逼,瞬间脑袋空白,这次要稍微整理下自己工作遇到相对比较大问题及解决方法,免得二次还是出现这个情况:1.大图浏览,后台list加载;背景:显示的时刻列表如上,当前列表是每天最多10张图片信息,当点击某一张图片进入大图浏览时,要按照顺序(按照时刻从该点开始进行所有的图片浏览);进入大图时,只有这天的10张图片信息;实现的所有图片步骤是:1)根据点击的图片所属的日期及这天的索引,在时间轴(从服务器拉去的时间轴,有日期对应这天的数量的列表),计算这张.原创 2020-09-15 11:59:43 · 869 阅读 · 0 评论 -
Android Studio包名大写导致dex找不到路径的类的问题
背景: app壳工程,引入第二个组件工程,报错如下:解决过程:在排查中发现AndroidManifest.xml的包名最后一段名字有大写,是包名与路径不符合的不符合的问题。原创 2020-06-09 17:10:10 · 484 阅读 · 0 评论 -
Android 使用 HTTPS SSLProtocolException sslv3
之前转载的文章并没有解决问题,继续排查Android的盒子系统19在https下访问发生了握手失败,失败的log如下:2019-10-14 10:24:43.344----3809:pool-3-thread-1----b----catch IOException : javax.net.ssl.SSLHandshakeException: javax.net.ssl.SSLProtoc...原创 2019-10-15 11:09:14 · 1059 阅读 · 0 评论 -
Android 使用 HTTPS 问题解决(SSLHandshakeException)
title date categories tags Android 5.0以下TLS1.x SSLHandshakeException 2016-11-30 12:17:02 -0800 Android Android ...转载 2019-10-14 18:41:40 · 6840 阅读 · 0 评论 -
node.js代理转发get和post,拦截指定api下发的自定义数据
有些时候老是依赖后端才能部署灰度才能调试,现在可以直接路上袖子直接干,只拦截特定path,来下发自定义的数据;其他的做转发处理;这样可以提升客户端的开发效率。1. 安装:node.js2. 安装 request npm init --yesC:\Users\Administrator>npm install request --save3. 把一下代码保存到后缀名为js的文原创 2017-11-03 18:11:53 · 2913 阅读 · 0 评论 -
仿时光相册里列表滚动条
1.点击显示当前显示日期;2.放手则收缩,过三秒自动隐藏。控件代码如下ScrollFloatBar.javapublic class ScrollFloatBar extends FrameLayout { private static final String TAG = "ScrollFloatBar"; private IScrollClick原创 2017-09-08 18:53:14 · 541 阅读 · 0 评论 -
java.lang.IllegalArgumentException: Comparison method violates its general contract!
异常信息[java] view plain copy print?java.lang.IllegalArgumentException: Comparison method violates its general contract! at java.util.TimSort.mergeLo(TimSort.java:747) at转载 2017-07-28 18:17:18 · 462 阅读 · 0 评论 -
多渠道打包图片资源替换
多渠道打包时,有个别渠道需要替换图片;按照目录的结构不同,有以下方式实现:1.不改变android studio的目录结构 即,如下实现替换方式:在main的同级目录下新建渠道名,建立保持跟main的res目录结构,加上要替换的资源图片即可;如下所示:2.非源目录结构替换 在build.gradle修改了目录结构原创 2017-08-01 16:23:40 · 1628 阅读 · 0 评论 -
VLC android 3.0解码器使用及移植TV项目调研
1.是什么VLC Media Player (VideoLAN) 为 Windows、Linux、OS X、Android、iOS、Windows Phone 等平台提供一个视频播放器、解码器。它可以播放来自网络、摄像头、磁盘、光驱的文件,支持包括MPEG 1/2/4, H264, VC-1, DivX, WMV, Vorbis, AC3, AAC等格式的解码。VideoLAN 代码开源,可原创 2017-07-10 23:00:02 · 2839 阅读 · 0 评论 -
15 个 Android 通用流行框架大全
15 个 Android 通用流行框架大全1. 缓存名称描述DiskLruCacheJava实现基于LRU的磁盘缓存2.图片加载名称描述Android Universal Image Loader一个强大的加载,缓存,展示图片的库转载 2017-05-14 00:03:58 · 348 阅读 · 0 评论 -
AndroidFlux项目一览-Flux架构的Android移植
AndroidFlux项目一览-Flux架构的Android移植 作者 ntop 关注2015.12.24 23:55* 字数 2350 阅读 7375评论 24喜欢 55这篇文章是我在Github上发起的AndroidFlux项目的Overview页面。简要介绍了AndroidFlux的项目背景和Flux的基础知识。如果你对此项目感兴趣欢迎加入An转载 2017-05-14 00:01:21 · 455 阅读 · 0 评论 -
android 原apk替换androidManifest.xml的metaData的多渠道自动打包
在已经编译出一个apk的情况下,其他的渠道只是改变androidManifest.xml的metaData信息,在这个情况下不需要再编译apk,只需要修改androidManifest.xml;实现的思路如下:1.获取源androidManifest.xml;因为apk里的androidManifest.xml是已经编译为二进制的文件,不好修改;可以使用apktool把源apk反编译得到andro...原创 2018-06-05 16:53:01 · 3193 阅读 · 0 评论 -
安卓中的Flux架构
安卓中的Flux架构泡在网上的日子 / 文 发表于2015-08-16 19:31 第6127次阅读 架构,Flux8编辑推荐:稀土掘金,这是一个针对技术开发者的一个应用,你可以在掘金上获取最新最优质的技术干货,不仅仅是Android知识、前端、后端以至于产品和设计都有涉猎,想成为全栈工程师的朋友不要错过!英文原文:Flux Architecture on An转载 2017-05-13 23:15:51 · 612 阅读 · 0 评论 -
listview嵌套滑动
实现list的标题的滑动显示与否,很多例子使用CoordinatorLayout,AppBarLayout,RecyclerView就能完成,在不使用AndroidDesignSupport包下需要实现listview实现NestedScrollingChild,父及view实现NestedScrollingParent;1. 有关NestedScrollingChild,NestedScro原创 2018-01-12 18:34:43 · 583 阅读 · 0 评论 -
《广研Android卡顿监控系统》
实现背景应用的使用流畅度,是衡量用户体验的重要标准之一。Android 由于机型配置和系统的不同,项目复杂App场景丰富,代码多人参与迭代历史较久,代码可能会存在很多UI线程耗时的操作,实际测试时候也会偶尔发现某些业务场景发生卡顿的现象,用户也经常反馈和投诉App使用遇到卡顿。因此,我们越来越关注和提升用户体验的流畅度问题。已有方案在这之前,我们将反馈的常见卡顿转载 2018-01-22 20:56:24 · 3215 阅读 · 0 评论 -
APK反编译之一:基础知识--smali文件阅读
用反编译工具apktool得到的smali转载 2014-11-18 18:04:10 · 54854 阅读 · 11 评论 -
Android ijk视频播放器使用TextureView问题
在视频播放器添加了个菜单,能多次在系统播放器和ijk播放器切换,但是在二次切换ijk播放器出问题:TextureView二次切换初始化时不会回调SurfaceTextureListener。 原有的ijk播放器的流程是在布局中声明TextureView,然后设置SurfaceTextureListener;估计是在初始化后,不能再二次绑定; 因此,可以在布局声明个容器,动态new个...原创 2019-08-29 16:53:44 · 1169 阅读 · 0 评论 -
Glide 加载优化
Android一般情况使用Glide加载图片,但是使用不注意就会有些问题:比较大的list的图片列表快速滚动,当前的图片需要等前面的加载才可以加载,分析如下:1. listview的item中使用glide加载图片,当有需要对加载图片二次处理使用重新simpleTarget,然后给into,如下所示 Glide.with(mContext).load("http...原创 2019-05-23 18:08:19 · 4612 阅读 · 0 评论 -
外部应用使用FLAG_ACTIVITY_NEW_TASK启动activity问题
问题描述: 外部应用使用Intent.FLAG_ACTIVITY_NEW_TASK,启动桥接的activity切换对应的功能界面显示时,第一次能启动对应的activity,在没有退出的情况下,第二次启动时,这个activity的生命周期并没再调用;解决: 因为外面不能使用广播功能,因此只有在桥接的activity收到的情况下,发出广播,收到的广播里再启动目标的activity,...原创 2019-01-09 18:55:59 · 3151 阅读 · 3 评论 -
TextView 文字不能滚动问题
现象: TextView 布局中原来是gone不可见状态,设置可见状态时,并设置select(true)时,文字不能滚动;解决: textView设置为Visiable后,不能马上设置为select(true),延迟执行select(true)即可解决。...原创 2018-12-13 16:04:05 · 2101 阅读 · 0 评论 -
Android VideoView 播放停止在时间点
播放一个视频,需要停止在某个时间点上,原始的思路是在start后,使用handler延时到具体的时间点发送消息,消息的处理是视频pause;但是在某些情况出现在停止的时间点跟理想的时间不一样,假如时间点比较小的情况,有可能是视频还播完就调用pause了。解决:监听setOnPreparedListener事件,在回调时在发起延时handler,这样可以避免视频源准备阶段时间过长,实际停留的时间贴近...原创 2018-05-16 17:51:25 · 3060 阅读 · 0 评论 -
TV盒子大图浏览优化
TV盒子在高分辨率时会有马赛克、图片加载缓慢及模糊情况,特别注意的是修改盒子的分辨率仅仅是修改输出的视频流的分辨率,对盒子系统本身的分辨率时没有任何影响,其他的参考优化方案如下:glide、加载缓冲及调试屏显信息输出,其中,屏显是有助于定位问题及解决。...原创 2018-04-24 21:58:39 · 743 阅读 · 0 评论 -
《客厅TV-APP HttpDNS技术接入与实战》
《客厅TV-APP HttpDNS技术接入与实战》原创 2018-04-12 yujieliu 腾讯Bugly1 项目概况域名劫持大家并不陌生,从PC时代到移动互联时代,网络安全愈发重要,劫持方式更是层出不穷。现在到了智能客厅时代(意淫一下),如果说移动互联时代由于开放性和竞争性,大的厂商还是有良知的,比较注重口碑二字,但客厅由于其封闭性,无良厂商只手遮天,各类监控、各类弹窗广告、各类精简系统、各...转载 2018-04-12 21:24:14 · 2027 阅读 · 0 评论 -
使用nuwa热补丁的编译注入第三方jar类的问题
使用nuwa热补丁编译时,使用javassist,在注入腾讯的jar的类时报一下问题:* Exception is:org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':sample:nuwaJarBeforeDexQihooDebug'. at org.gradle.api.internal.ta原创 2016-09-26 19:47:38 · 1219 阅读 · 0 评论 -
muldex定制主dex类
使用multiDex时,想定制放入写特定类的方法,在build.gradleafterEvaluate { tasks.matching { it.name.startsWith('dex') }.each { dx -> def listFile = project.rootDir.absolutePath+'/app/maindexlist.t转载 2016-09-20 16:53:31 · 1273 阅读 · 0 评论 -
TV listview及焦点处理
android TV上的listview ,因为没有touch事件,只能通过按键处理,因此,用到listview时需要特殊处理:1.复杂的view需要获取焦点,需要设置:setItemsCanFocus(true)同时需要设置下能获取焦点view的属性:android:focusable="true这样子级view就可以获取获取焦点。2.view中需要获取焦点需要高原创 2016-09-23 11:23:32 · 2975 阅读 · 0 评论 -
最强的反编译工具 ida Pro 6.4 Plus 带保存功能的最终版来了免费了
最强的反编译工具 IDA Pro 6.4 Plus 可保存结果的最终版来了1 解除时间限制2 解除每30分钟跳出提示的限制3 解除复制粘贴的限制4 解除批处理限制。。。5 增加插件支持和F5功能6 增加保存idc功能Shift+s (实现保存分析可以根据时间保存多个快照)7 增加各种加密狗的sig8 增加各种iphone系统库的sig识别9转载 2014-11-05 19:18:31 · 18503 阅读 · 1 评论 -
http://blog.youkuaiyun.com/victoryckl/article/details/6687083
看ndk说明文档关于第三方库(Prebuilts)的用法,安装上面的方法试了下,结果老是连接不上,第三方库中的函数连接不到:Administrator@4ec48ba026e34ae /cygdrive/e/myprj/hello-jni/jni$ /cygdrive/e/work/android-ndk-r5b/ndk-buildCompile thumb : hello-jni转载 2014-11-05 19:17:09 · 691 阅读 · 0 评论 -
JNI:Fatal signal 11 (SIGSEGV) at 0x00000008 (code=1)错误的一点认识
最近做的一个东西需要jni去实现,对于一个我这样用惯了java,习惯了debug的人来说,用NDK,使用C/C++去编程是件很苦逼的事情,但是最苦逼的事情在于内存错误发生后如何排查,尤其是 Fatal signal 11 (SIGSEGV)这个错误尤其恼人,报出来之后程序就会崩溃,定位还不好定位,刚开始发生这样的错误时候,只能去到处加log,到处屏蔽代码去找问题发生的地方,效率比较低,并且很难找到转载 2014-11-05 19:16:53 · 22250 阅读 · 0 评论 -
dalvik缓存class及清空已加载类.
插件中使用了原创 2014-11-06 09:12:40 · 2835 阅读 · 0 评论 -
自定义View在layout中的构造实例Constructor被缓存
最近在搞插件,原创 2014-10-16 18:13:41 · 869 阅读 · 0 评论 -
解决插件apk获取metaData
插件apk没有真正原创 2014-11-19 16:56:36 · 3444 阅读 · 0 评论 -
插件加载带有动态库so的apk处理
插件加载带有动态库的apk时,会报原创 2014-11-14 18:20:48 · 5620 阅读 · 5 评论