自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

chivalrous

The more I practice, the luckier I get.

  • 博客(60)
  • 资源 (27)
  • 收藏
  • 关注

原创 安卓开发日志采集和分析面面谈

明确系统提供了哪些日志,cpu、meminfo、app、log等,我们怎么看日志,看日志的三步骤,怎么用工具提高分析日志的效率,bugreport和chkbugreport。

2024-05-27 11:22:02 851

原创 Android百问百答-《那些年被问过的Handler原理》

Android百问百答-《那些年被问过的Handler原理关于Handler,安卓面试最热门的知识点之一。本篇文章将围绕3点展开:可以提问哪些Questions?面试官会怎样follow up?以及怎样寻找答案。文章快速索引Android百问百答-《那些年被问过的Handler原理Handler常见提问Handler常见Follow UpHandler源码分析Handler#构造函数原理Handler#obtainMessage 原理Message源码分析Handler#post的原理Handle

2020-08-14 22:05:48 540 1

转载 Broadcast Recevier漏洞详解

广播安全方面的bug

2024-06-20 17:11:00 72

原创 安卓ANR检测、分析、优化面面谈

一个引发讨论的楔子,以下三种现象有什么区别:Application Not Responding按键或触摸事件在特定时间内无响应(origin:5s)KEY_DISPATCHING_TIMEOUT = 8*1000Broadcast TimeoutBroadcastReceiver在特定时间内无法处理完成BROADCAST_FG_TIMEOUT: 10sBROADCAST_BG_TIMEOUT: 60s按键和广播事件时间内未响应,时间限定定义在ActivityManagerService.jav

2024-06-01 18:30:00 341

原创 内存泄漏面面谈

主要介绍了内存泄漏的关注点是对象,对内存问题进行了分类并且确定本文关注点是内存泄漏,15种内存泄漏判断方式,hprof文件的用法和分析过程,以及memory profiler工具一些基本概念,最后提到了如何触发内存泄漏问题

2024-05-28 18:15:00 2166

原创 Android ANR Trace日志阅读分析技巧

Trace日志是指ANR目录下的一份txt文件,Trace日志用于分析应用ANR无响应的问题,,Trace日志的三个关键组成Heap部分、垃圾回收器histograms部分、Thread部分。

2024-05-28 09:52:35 1147

原创 内存泄漏案例分享3-view的内存泄漏

案例3——view内存泄漏前文提到,profile#Leaks视图无法展示非Activity、非Fragment的内存泄漏,换言之,除了Activity、Fragment的内存泄漏外,其他类的内存问题我们只能自己检索hprof文件查询了。下面有一个极佳的view内存泄漏例子,它的操作步骤为:我们重复三次之后,得到一份hprof文件,下面我们来分析一下内存泄漏问题①输入view的名称②选择view③可以看到分配了3个实例对象④Instance List视图显示,view有3个实例对象及其引用我们

2024-05-27 22:15:00 1725

原创 内存泄漏案例分享2-Fragment的内存泄漏

可以看到Fragment内存泄漏的第一个原因,内部类runnable持有了view的实例,每个Runnbale会发送一个延时5秒的消息,消息发送期间,有可能view、fragment已经结束了生命周期,此时产生了内存泄漏。接下来我们来看fragment内存泄漏,老规矩查看fields和references,确保它符合内存泄漏的情形;解决办法也很简单,view离开窗口的时候,释放Handler中消息,释放Runnbale对view 的引用。Fragment#MZBannerView#内部类Runnbale。

2024-05-27 21:45:00 378

原创 内存泄漏案例分享1—Activity或Fragment的内存泄漏

总结上述3个内存泄漏点PlayUtil构造函数持有Activity未释放LoadProgress成员变量HashMap持有Activity未释放AIDL远程服务端持有Listener,Listener持有Activity未释放优化效果优化前,多次进入该页面,点击播放按钮,产生4个实例,有3个实例无法被垃圾回收,出现了内存泄漏的情况优化后,多次进入该页面,点击播放按钮,只产生一个实例根据Retained Szie来看,优化前后节省内存,效果达到了 49937/332 = 150 倍。

2024-05-27 19:30:00 1214

原创 内存泄漏案例分享4-异步任务流内存泄漏

优化后的效果:优化后可看到Depth为空,GC root 为空,表明没有其他实例引用Activity了,当垃圾回收器扫描到此实例,该实例内存会被回收。还记得开头的问题吗?rxjava就会存在内存泄漏吗?答:会存在,consumer作为Activity的内部类,持有当前Activity的引用,任务未结束,Activity已销毁就会出现内存泄漏subscribe传入的匿名内部类Consumer实例不会造成内存泄漏吗?答:只要是匿名内部类,就很有可能内存泄漏,上例子已经证明会产生内存问题。

2024-05-27 17:50:35 675

原创 安卓六种页面加载优化方案对比总结

非业务执行顺序的,仅UI层面的优化,详情可以阅读笔者过去的文章Android与Web骨架屏详解。控制业务与UI的执行顺序、控制多业务之间的执行顺序。下面是这六种页面加载优化方案的对比。

2024-05-27 14:44:51 274

原创 安卓Bug总结

查看cpu和内存排序adb shell COLUMNS=512 top。查看内存排序 adb shell dumpsys meminfo。搜索NetworkOnMainThreadException。安卓十年开发遇到过得Bug做一个总结,大同小异,总结教训。在anrlog搜索total、memory--查看内存相关。或搜索 uncaughtException。搜索 UMCrashHandler、搜索ANR Warning。搜索 Exception。搜索AnrManager。这里存放BUG目录列表。

2024-05-27 09:54:22 860

原创 【安卓开发小经验】Android防抖动四种方案实践

这种方案简单的说,当一个动作连续触发,则只执行最后一次。查看代码,只有一个方法throttleFirstProcess方法会接收Runnnable对象作为value,以任务名作为key存储在一个ConcurrentHashMap里,每个Runnable的特点是将被延时1秒执行为了实现只执行最后一次的效果,我们主要利用了ConcurrentHashMap对象put方法的特性,

2024-05-27 09:42:29 1467 1

原创 【ANR问题小结】ANR小问题集合

广播超时、input event超时等问题、SP超时getString#apply#new超时、Input event dispatching timed out sending to\ANR Warning onLayout time too long问题分析及解决

2024-05-24 17:26:43 1097

原创 Gradle常见问题及总结

包括以下问题:gradle插件与gradle home版本关系错误、Gradle下载太慢、Executionfailed forJetifyTransform:xx.jar 、Failed to transform file ‘xxxxx.jar‘ to match attributes 、Module was compiled with an incompatible version of Kotlin.

2024-05-24 17:25:23 1132

原创 You must call removeView() on the child‘s parent first.异常分析及解决

view在上次已经是某个ParentView的child,然而现在又把它做为另外一个view的child,于是出现一个view有两个parent。个人理解是,因为F已经被添加到ViewGroup A中了,不能再被添加到ViewGroup B中,直白点就是,一女不能侍二夫。想要把F添加到ViewGroup B中,就要ViewGroup A先把F移除掉,再添加到B中去。对试图组件快速的左右滑动过程,发现某一张图片没加载出来,偶现crash。方案2:先移除,解绑与父view的关系,再重复添加。

2024-05-24 17:09:53 327

原创 $LayoutParams cannot be cast to android.widget.RelativeLayout$LayoutParams

View.getlayoutParams,返回的是父view的参数,父view 是什么,就得赋值给对应的父View.LayoutParams。动态添加子view的时候,报crash,提示。传递父view类型的LayoutParams。

2024-05-24 17:07:24 249

原创 ViewFlipper常见小问题

包括与click事件冲突、与Activity生命周期的关系

2024-05-24 16:56:08 162

原创 帧动画播放出现oom异常分析及解决

bitmap.recycle并不会立刻回收内存,内存还是会很紧张。源代码每一帧都创建一次bitmap,极度消耗内存。利用inbitmap,每一帧复用同一片内存区域。需要播放序列帧,帧数特别多的时候会oom。

2024-05-24 16:35:24 200

原创 【Glide】Glide/Picasso常遇到的小问题集合

包括了以下小问题You cannot start a load for a destroyed activity、图片加载异常class com.bumptech.glide.load.engine.GlideException: Failed to load resource、不支持http、保存的图片自动旋转90°、加载图片出现黑边

2024-05-24 15:51:06 355

原创 【okhttp】小问题记录合集

包括can’t create native thread、get不支持请求体、urlencode编码二次的问题The valid characters are defined in RFC 7230 and RFC 3986、 回调都在子线程、eader不支持中文、java.lang.IllegalArgumentException: Could not locate call adapter for io.reactivex.Observable、SocketTimeoutException或常分析及解决

2024-05-24 15:36:25 1025

原创 Android 链接4G热点网络第一次请求很慢ipv6地址链接异常分析及解决

网上查了查,答案都指向了DNS解析设置的问题,解析有两种 ipv4 ipv6 ,android默认不支持ipv6解析,之后问了下后台配置,说IOS 的 appstore 审核,必须需要ipv6的配置才能正常进行,所以服务端增加了 ipv6 支持,同时也支持ipv4,但是ipv6的入口再美国,那这样看来,猜测是否是android手机默认通过ipv6去连接后端服务器,绕了一大圈才返回结果?要知道,Android设备的规模已达几十亿,占据了智能手机市场的几乎八成,它不支持IPv6无疑是极大的桎梏。

2024-05-24 11:23:24 1156

原创 【相机开发问题总结】锁屏下相机资源释放问题

根据上面的文档,推测是锁屏下系统并没有改变surfaceview的可见性,于是我尝试在onPause和onResume时通过手动设置surfaceview的visibile属性,结果发现可以正常触发回调函数了。问题出现在跳转页面之前,可能触发了锁屏,会导致息屏,息屏呢,同时会释放相机资源,释放人脸识别sdk,以便于两瓶再次恢复页面的时候,重新申请相机资源,而此时会出现app crash。系统锁屏时间设置了15秒,有一个页面是人脸识别页面,会开启相机展示相机预览内容,并分析人脸结果,自动跳转到下一个页面。

2024-05-24 11:11:13 284

原创 【相机开发问题总结】后台恢复到前台预览界面卡住

surfaceView或TextureView通过new实例化,而不是在布局中定义。并且在onStart() 通过addview方式把view加到布局中,在onStop()时通过removeView()方式移除view。页面提供了相机预览功能,该页面有可能长时间活跃在前台,也有可能偶尔被语音或者其他操作顶到后台去。onStop()时,SurfaceView或TextureView没有销毁。所以重新打开摄像头时,view的生命周期不会重新执行,也就无法刷新。回到前台时,需要恢复相机资源和预览界面。

2024-05-24 10:48:46 269

原创 【相机开发问题总结】小问题集合

camera开发的小问题,小异常,小bug总结,如黑屏、多次初始化、捕获视频流等问题。

2024-05-24 10:41:20 413

原创 java.lang.UnsatisfiedLinkError: dlopen failed: “/lib/arm64/libGlobal.so“ 异常分析及解决

之前我就遇到过使用高德地图和二维码扫描Qrcode造成的冲突,Qrcode是一个module做为app工程的library,因为高德地图必须要在armeabi-v7a文件夹下放置so文件,而做为library的Qrcode则同样也需要armeabi-v7a不然编译报错,但恰巧Qrcode只有32位的,这样就尴尬了,后来查询了资料终于解决了这个问题,问题就来了,有些网上找的64位的不一定是三方官方提供的,那么就不能去使用和兼容。说到这,首先想到的办法就是从网上在下载个64位的so文件不就完了,

2024-05-24 10:21:14 384

原创 java.lang.IllegalArgumentException: PhoneWindow$DecorView not attached to window manager异常分析及解决

一个老项目,网络请求时会弹出loading,loading的技术实现是用Dialog实现的。频繁展示loading的时候,偶现。是:loading显示->网络请求->异步callback回调->loading隐藏。是在异步callback回调->loading隐藏的时候。隐藏dialog之前判断dialog是否处于显示状态。判断activity是否正常、页面是否销毁。当然以防万一,做好完整的判断更好一点。在异步回调里做UI操作之前。

2024-05-24 10:08:06 324

原创 Only the original thread that created a view hierarchy can touch its views异常分析及解决

开发一款视频通话App时候,有个需求是查询通话记录列表,查询通话记录,毫无疑问要做网络请求,在该请求的callback中同时做了view初始化操作,logcat提示。android不允许子线程操作UI。在主线程中操作UI,可以有以下做法。

2024-05-24 09:56:15 989

原创 adb频繁重启问题分析及解决

6.修改db端口adb:windows修改adb自定义端口号,在计算机-属性-高级系统设置-环境变量-系统变量,新增ANDROID_ADB_SERVER_PORT,变量值即为端口号,自行定义。4.一般经常断是因为端口被占用,所以修改端口,有一段时间我把端口改成44444,好了一段时间,但是没过多久,又开始掉线。2.命令行 adb kill-server adb start-server adb devices。5.查看端口被占用情况(不会网搜),如果发现又一个程序占用了adb端口,直接将占用的程序卸载。

2024-05-23 18:47:01 595

原创 application多进程初始化异常分析及解决

一般情况下,一个应用程序就一个进程,这个进程的名称就是应用程序包名。Android 的四大组件在 AndroidManifest 文件中注册的时候,有个属性是 android:process,这里可以指定组件的所处的进程。在 MaApplication 中直接对 PriorityLogicWrapper 进行操作,无需操作 BaseApplicationLogic 对象。安卓允许一个App声明多个进程,多个进程初始化时会创建多个Application,可能引发许多不可控问题。

2024-05-23 18:41:37 309

原创 【内存泄漏Bug】animation未释放

一个页面做了动画特效,这个页面有可能跳转到其他页面,并长时间不返回,该页面此时已经不活跃了,该页面的对象为无用对象,存在内存泄漏风险。在onPause、onResume做动画的停止、恢复处理,避免重复创建动画;页面不再处于前台的时候,未将动画暂停,释放动画资源。在onDestory做动画的销毁处理,避免无法gc。3. 点击back按钮,并不会杀死当前页面。2. 有可能从其他页面跳转回来。这个activity的特性是。1. 有可能跳转到其他页面。

2024-05-23 18:10:08 398

原创 【内存泄漏Bug】registerReceiver Are you missing a call to unregisterReceiver()异常分析及解决

开发一款WIFI管理APP,再wifi列表页面注册了广播监听,监听网络变化,页面是常驻内存的,跳转到其他app或者其他页面的时候,此页面存在被系统销毁的可能。页面回退之后,广播忘记反注册。页面销毁调用反注册广播。

2024-05-23 18:00:17 474

原创 【相机开发问题总结】曝光补偿ExposureCompensation未生效异常分析及解决

做一款相机应用时,用户反馈相机预览界面太暗了,由于我们是嵌入式设备,没有手机那么高大上得闪光灯补光,因此只能考虑从软件层面提高界面亮度,还好找到了曝光补偿,但是开发过程中发现曝光补偿未生效,界面依然很黑。android camera可以通过以下五个API,分别获取step,最大曝光补偿级数,最小曝光补偿级数,当前曝光补偿级数,设置曝光补偿级数。曝光补偿值=step * 曝光补偿级数。曝光补偿存在一定范围,比如-2至2,或者-3至3,单位为EV,可以理解为exposure value。根据上述概念,我发现。

2024-05-23 17:56:24 552

原创 【相机开发问题总结】java.lang.RuntimeException: setParameters failed异常分析及解决

我们能够得到什么信息呢,setParameters方法是调用jni方法native_setParameters的方法,事实上看到这里就差并不多了,由于再去查看jni方法是非常麻烦的。我们能够发现传输进来的是Parameters參数,调用了Parameters的flatten方法。非常多人不知所以然就上网開始找,找不到就開始各种推測,一个个參数设置过去,事实上最有效的方式是究竟层找原因。经过与ROM开发同事沟通,是由于android的setParameters参数传递错误,该参数不被底层支持。

2024-05-23 17:50:50 394

原创 【相机开发问题总结】Caused by: java.lang.RuntimeException: Fail to connect to camera service异常分析及解决

开发一款嵌入式设备,有多个相机,以usb形式和串口形式连接,调用open方法得时候,crash闪退。先获取安卓可识别得camerid,再传递给open函数。camer.open 时,传错了camer id。

2024-05-23 17:44:04 399

原创 java.lang.IllegalStateException: closed 异常分析及解决

response.body().string()只能请求一次,请求过后,就会关闭,再次调用response.body().string()就会报close异常,使用变量接收数据,后续使用变量data 就可以解决这个问题。使用okhttp请求数据,进行解析,遇到。

2024-05-23 17:35:34 625

原创 SUPPLICANT_ERROR——Android Wifi列表频繁刷新异常

总的来说: 此现象在发生在scan和user connect刚好一前一后发生,并且scan未处理完user就trigger connect.,要求时间刚刚好打到。开发一款WIFI管理应用,基础功能有WIFI列表查询功能,在之前有链接过WIFI得清空下,频繁点击WIF列表查询功能会收到SUPPLICANT_ERROR广播。所以应用层的解决方法是:1.避免在调用scanWifi()的短期内调用connect,就是避免在扫描期间调用connect。自动链接WIFI得时候,要判断是否处于WIFI扫描期间;

2024-05-23 17:32:50 224

原创 ANR Warning onLayout time too long问题分析及解决

频繁点击、频繁请求或其他快速频繁操作触发了onLayout ,同时onLayout 中做了耗时操作,导致anr。一个ViewPager中频繁刷新,偶发。

2024-05-23 17:27:03 310

原创 Android android.os.DeadObjectException aidl通信异常分析及解决

针对应用开发,可以在服务端进程启动的时候发个消息给客户端,客户端收到消息的时候重新进行绑定操作,目的是为了同步客户端和服务端的连接,客户端进程启动的时候也要绑定一次(注:在已经连接的情况下,服务端由于某种原因进程重启了,如果客户端没有收到回调,客户端保存的连接不为空,这时调用服务端接口就会抛出DeadObjectException异常)3)在service绑定成功后,调用linkToDeath()注册进service,当service发生异常断开连接后会自动调用binderDied()

2024-05-23 17:12:55 800

原创 java.io.IOException: setDataSource failed.: status=0x80000000异常分析及解决

做一款新得音乐播放器,播放音乐闪退Crash,看到最后报告的异常是IO异常:`java.io.IOException: setDataSource failed.: status=0x80000000`

2024-05-23 17:08:56 527

低版本adb;21版本adb-adbplatform-tools-r21-windows

低版本adb;21版本adb;platform-tools_r21-windows;用于测试问题;;

2024-05-27

StarUML3.2.2最新免费版

1.安装StarUML_Setup_3.2.2.exe 2.将crack\app.asar文件复制到安装目录 StarUML\resources\目录下 注:所有文件来源于网络,仅供大家学习研究,试用过后请购买正版使用。

2022-03-31

JMS实时消息通讯源码-ActiveMQ Java服务端和Android客户端源码

1、解压安装文件,执行\apache-activemq-5.13.3-bin\apache-activemq-5.13.3\bin\win64\wrapper.exe. 2、测试发送消息,打开本地服务器地址http://localhost:8161,登录服务器,默认用户名密码:admin,admin。登录以后就可以发送测试消息了,Android端可以接收。

2018-05-23

sun.misc.BASE64Decoder.jar 适合Android和Java数据互通加密解密

sun.misc.BASE64Decoder.jar 适合Android和Java数据互通加密解密

2017-10-13

thinkphp3.2.3文档chm

thinkphp 3.2.3 chm文档,还是非常好看的,喜欢的可以点赞

2017-10-06

斯坦福大学编程方法学课件

网易公开课斯坦福大学编程方法学所有课件资料

2016-10-06

Android消息推送方案demo

包含服务端和移动端

2016-10-06

Android SSL证书验证原理

Android SSL验证原理

2016-08-25

androidWebApp

Android web app示例,来自Google的demo 有解析XML,skip不需要的标签,根据网络状态,SharePrefernence设置app状态等技巧

2016-08-05

Google使用WIFI示例

Android平台下WIFI使用示例

2016-08-02

ViewPager五种动画效果

Google 提供的五种ViewPager动画

2016-07-30

自定义android动画

自定义android动画

2016-07-28

谷歌Transition示例讲解demo

实现Android动画Transition使用方法

2016-07-28

AndroidOpenGLES使用

AndroidOpenGLES使用

2016-07-23

Android自定义相机

仅仅支持Android studio 2.2以上的版本 想看demo效果的,在build目录中有apk可以自行安装

2016-07-15

Android使用Print保存文件

Android使用Print保存文件

2016-07-15

WebviewWep Apps

WebviewWep Apps

2016-07-05

Androidnteracting with Other Apps

Android interacting with Other Apps

2016-06-27

Fragment通信demo2

Fragment

2016-06-24

google fragment示例

2016-06-24

Fragment之间通信实例

http://blog.csdn.net/chivalrousman/article/details/51623122

2016-06-10

java数据结构与算法中文版

java数据结构与算法中文版

2016-06-05

Google 官方 Android DisplayBimaps的优化事例

Google 官方 Android DisplayBimaps的优化事例,博客链接http://blog.csdn.net/chivalrousman/article/details/51553114

2016-06-02

NotePade++FunctionList

NotePade++ 插件FunctionList

2015-12-24

facebook-android-sdk-master.zip

facebook-android-sdk-master.zip

2015-11-06

获取脸书的哈西值

获取facebook的keyhashs,具体步骤查看我的博客http://blog.csdn.net/chivalrousman/article/details/49614489

2015-11-03

新浪微博微信MD5应用签名生成

新浪微博微信MD5应用签名生成,填写到官网的应用签名栏即可。

2015-11-03

空空如也

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

TA关注的人

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