- 博客(49)
- 资源 (4)
- 收藏
- 关注

原创 安卓性能优化之懒加载的原理及实现(超详细仿微信头条实现Fragment数据懒加载)
1. 本问Part1主要是从`ViewPage的源码去分析预加载机制的实现原理`和产生的问题,从而引出懒加载, 2. Part2主要是从Fragment的六个方法入手,讲述懒加载的实现原理和步骤,以及`ViewPager+Fragment`嵌套使用的时候`子ViewPager中Fragment的`懒加载实现 3. 本文part1和part2没有特别直接的关联,如果不关新ViewPager预加载原理的同学,可以直接跳过Part1...
2019-09-01 17:51:46
6587
1

原创 Android framework源码分析二 应用进程启动流程源码分析(Android8.0)
点击桌面图标如何启动的app概述1:APP启动的入口Launcher的分析概述上一篇文章中对Activity的启动流程做了详细的分析,在第三部分的Step13中ActivityStackSupervisor类的startSpecificActivityLocked方法中分析到如果activity所在进程已经启动的情况,今天就来分析一下进程未启动的情况,即App的启动流程。其实app的启动最...
2019-05-12 16:44:33
5256
4

原创 Android framework 源码分析一Activity启动流程(android 8.0)
Android framework 源码分析之Activity启动流程android 8.0概述Activity的启动流程概述Android系统对四大组件的工作过程进行了很大程度的封装,方便开发者使用,Activity作为Android中四大组件之一,直接跟用户进行交互,对于用户来说activity就是应用的一切,系统对其工作流程当然也做了很多封装,本篇文章将介绍Activity的启动流程,在...
2019-05-04 23:50:23
6928
2

原创 Android studio编写第一个NDK工程的过程详解(附Demo下载地址)
Android studio编写第一个NDK工程的过程详解,以及Demo下载地址1:创建工程和配置NDK2:编写JNI程序1:创建HelloWord.java类在此类中定义native方法,注意该文件中最好不要有中文字符,我这里加了一些批注方便理解2:在Terminal窗口编译HelloWord获取字节码文件`javac HelloWord.java`**注意切换到此文件目录下或者用绝对路径**,...
2019-04-30 11:08:26
5823
7

原创 面试必备2:JDK1.8LinkedHashMap实现原理及源码分析
JDK1.8LinkHashMap实现原理及源码分析概述LinkHashMap的数据结构LinkHashMap的链表节点LinkedHashMapEntry概述本文对LinkHashMap的源码分析是基于JDK1.8,因为LinkHashMap实在HashMap的基础上进行的功能扩展,所以需要掌握HashMap的源码和实现原理,如果不了解请先阅读我的另一篇HashMap的实现原理和源码分析重点...
2019-04-11 00:56:14
4853
1

原创 面试必备1:HashMap(JDK1.8)原理以及源码分析
HashMap概述:1:HashMap的数据结构在分析HashMap的源码前,我们需要先知道HashMap是基于什么样的数据结构来进行数据存储的,知道了这些我们再去看源码就容易的多。散列表(哈希表) 我们常用的数据结构就是数组和链表,数组具有增删慢查找快的特点,而链表具有增删快查找慢 的特点;基于上述特点,HashMap 即想要查询效率快,又想增删效率高,基于这样的特点HashMap的数据结...
2019-04-11 00:49:27
5553
5

原创 Android事件分发机制原理及源码分析
面试Android事件分发机制原理分析概述Touch 事件分析dispatchTouchEvent(ev)事件分发onInterceptTouchEvent(MotionEvent ev)事件拦截onTouchEvent(MotionEvent ev)事件响应Activity 的dispatchTouchEvent概述Android中的事件分发机制指的是事件从Activity–>View...
2019-03-20 22:13:11
5057
1

原创 Android三级缓存原理及用LruCache、DiskLruCache实现一个三级缓存的ImageLoader
Android图片三级缓存原理及用LruCache、DiskLruCache动手打造一个三级缓存的ImageLoader三级缓存概述三级缓存的流程强引用 、弱引用 、软引用、虚引用的区别:内存缓存LruCacheDiskLruCache:三级缓存概述缓存是一种通用的思想可以用在很多场景中,但在实际的开发中经常用于Bitmap的缓存,用于提高图片的加载效率、提升产品的用户体验和节省用户流量。目...
2019-03-18 14:18:15
4855
6

原创 Handler机制一篇文章深入分析Handler、Message、MessageQueue、Looper流程和源码
一篇文章深入分析Handler源码Handler概述Message 消息对象MessageQueue: 消息队列的源码分析Handler概述 Handler是一种通信机制,只不过在Android我们常用来更新UI,接下来我将分别从Message、MessageQueue、Looper、handler以及ThreadLocal的源码去深入理解handler的执行流程。Message 消息对...
2019-03-13 23:09:45
4964
4
原创 Kotlin 中 also 方法的用法和使用场景
是一个非常实用的工具,尤其在需要对对象执行额外操作而不中断链式调用时,能够显著提升代码的可读性和简洁性。是 Kotlin 标准库中的一个范围函数,用于对对象执行操作并返回该对象本身。被用来记录每一步的操作结果,同时保持链式调用的完整性。当创建一个对象后需要立即对其执行某些操作时,可以使用。,可能需要先创建对象,再单独设置属性,代码会显得冗长。用于处理响应逻辑,而链式调用继续执行后续操作。插入日志或调试信息,而不会中断链式调用。可以减少对同一个对象的重复调用。在链式调用中,可以使用。
2025-03-17 15:56:55
399
原创 Kotlin 中 let 方法的作用和使用场景
是 Kotlin 标准库中的一个扩展函数,用于对非空对象执行操作。的对象时,能够显著提升代码的安全性和简洁性。是一个非常实用的工具,尤其在处理可能为。当需要多次使用同一个对象时,可以通过。等)结合使用,实现复杂的链式调用。来确保只在对象非空时执行代码。可以用来简化对非空对象的操作。的对象执行操作时,可以使用。或判断非空,代码会显得冗长。可以与其他范围函数(如。
2025-03-17 10:21:44
276
原创 Android Studio升级到4.1.2不兼容ButterKnife、Gsonformat等插件并且编写的代码语法错误时编译器无任何报红提示或警告的解决方案
Android Studio升级到4.1.2后遇到的坑,ButterKnife、Gsonformat等插件不兼容 ,并且编写的代码错误时不报红提示
2021-01-28 16:47:52
3119
原创 java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState的原因分析以及解决方案
Android Fragmen通过commit方法报错:IllegalStateException: Can not perform this action after onSaveInstanceState;Android Fragment commit()方法和commitAllowingStateLoss()方法的区别和源码分析
2021-01-25 23:04:36
1956
原创 Android反编译apk修改版本号重新打包签名详细教程(超详细)
Android apk反编译、修改、重新打前名的详细流程介绍图文教程超详细
2020-09-30 15:05:25
17518
3
原创 ListView 的Adapter刷新数据时出现IndexOutOfBoundsException: Index: 4, Size: 0 数组越界异常问题的解决方案
ListView 的notifyDataSetChanged刷新数据时出现IndexOutOfBoundsException: Index: 4, Size: 0 数组越界异常问题的解决方案
2020-07-21 15:14:45
3415
1
原创 ARouter::There is no route match the path [/xxx/xxx], in group [xxx]问题的终极解决方案
ARouter::There is no route match the path 我按照按照百度和官方给的排查问题方案反复排查,发现自己的各项配置都没问题 ,但是就是报此错误折腾了半天终于解决了
2020-05-07 21:11:03
6068
11
原创 RPC failed curl 18 transfer closed with outstanding read data fatal protocol error bad pack header
RPC failed; curl 18 transfer closed with outstanding read data remainingfatal: The remote end hung up unexpectedlyfatal: protocol error: bad pack headerpack-objects died of signal 9/5818) fatal: early EOFfatal: index-pack failed
2020-04-08 10:12:26
7048
原创 java.lang.IllegalArgumentException: Unexpected char 0x5a46 at 35 in Content-Disposition value: f
okhttp的请求头含有中文时报错java.lang.IllegalArgumentException: Unexpected char 0x5a46 at 35 in Content-Disposition value: form-data; name="files"; filename="婆婆说.mp3"
2020-01-17 12:30:06
6891
原创 Caused by: java.lang.ClassNotFoundException: Didn't find class "com.davemorrissey.labs.sub
Caused by: java.lang.ClassNotFoundException: Didn't find class "com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView" on path: DexPathList[[zip file "/data/app/com.myh.pdftest-1/base.apk"],nativeLibraryDirectories=[/data/app/com.myh.pdftest-1/lib/
2019-12-12 14:23:19
3721
原创 Cause: buildOutput.apkData must not be null
Cause: buildOutput.apkData must not be null问题描述今天在giehub上下载了一个开源库, 编译时没问题但是运行时出现Cause: buildOutput.apkData must not be null, 经过一番研究中途也才也踩了不少坑,最后发现缓存导致的。(可能因为自己电脑上的gradle版本比项目的高,中途切换成自己的gradle版本导致)...
2019-12-12 10:05:52
2942
原创 TextView 等setCompoundDrawables 无效的解决办法
Android setCompoundDrawables 无效的原因和解决办法今天通过一个TextView这样一个效果,通过代码动态切换drawableRight的箭头图片问题描述需要在代码中动态切换切换drawableRight的图片,通过setCompoundDrawables(Drawable left, Drawable top, Drawable right, Drawable...
2019-10-16 13:43:55
8020
原创 Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK
跳转Activity报错:Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want? at android.app.ContextImpl.startActivity(ContextImpl.java:682)
2019-09-24 10:36:31
5032
1
原创 Android P联网报错 :Cleartext HTTP traffic to xxx not permitted的解决办法
项目在Android 9.0的手机上报错java.io.IOException: Cleartext HTTP traffic to xxx not permitted的解决方案总结
2019-09-22 20:53:19
5194
原创 解决ViewPager和PagerAdapter中调用notifyDataSetChanged失效问题(从notifyDataSetChanged方法的源码入手,超详细)
从PagerAdapter的notifyDataSetChanged方法源码入手解决ViewPager和PagerAdapter中调用notifyDataSetChanged失效的解决办法。周末了,总结一下最近在项目中通过`ViewPager`和`PhotoView`做一个照片查看器的效果,调用`notifyDataSetChanged`方法无法更新界面的问题
2019-09-20 23:18:07
7457
3
原创 Manifest merger failed with multiple errors see logs的解决办法
Manifest merger failed with multiple errors see logs的解决办法,通过gradlew processDebugManifest --stacktrace命令或者gradlew assembleDebug --stacktrace -info命令打印出详细的错误信息
2019-09-16 20:07:21
7920
原创 idea出现Undo Set language level to 6 - @Override in interfaces?
idea中@Override注解报红出现**Undo Set language level to 6 - @Override in interfaces?
2019-09-11 18:55:18
8470
3
原创 No virtual method setOutputFile Ljava/io/File V in class Landroid/media/MediaRecorder
使用MediaRecorder 在做音频录制时报错:java.lang.NoSuchMethodError: No virtual method setOutputFile(Ljava/io/File;)V in class Landroid/media/MediaRecorder; or its super classes (declaration of 'android.media.MediaRecorder' appears in /system/framework/framework.jar)
2019-09-09 17:17:42
5430
原创 java.lang.ClassNotFoundException com.google.wireless.android.sdk.stats.IntellijIndexingStats$Index
Error:Internal error: (java.lang.ClassNotFoundException) com.google.wireless.android.sdk.stats.IntellijIndexingStats$Indexjava.lang.ClassNotFoundException: com.google.wireless.android.sdk.stats.IntellijIndexingStats$Index
2019-09-05 10:45:11
29846
8
原创 windows系统下查看端口占用情况
1:查看所有端口所在进程的pid在命令窗口中输入netstat -ano 查看指定端口的所在进程的pidnetstat -ano|findstr 端口号查看所有:查看指定端口:根据pid杀死进程:命令方式或任务管理器任务管理器方式:2:通过命令方式:step1:查看指定pid进程的名字 tasklist |findstr pid号注意:tasklist后面不加参数时产看所有进程的...
2019-08-30 12:20:50
3923
原创 mac系统下查看端口占用问题的解决方案
在日常的开发过程中不可避免的就是端口被占用导致服务启动不起来,那么在mac系统下如何解端口占用问题呢?window系统下查看端口占用的解决方案请阅读此文1:在终端下输入lsof -i tcp:端口号2:在终端或者活动监视器中杀掉对应pid的进程在终端下kill pid号即可:2:在活动监视器下...
2019-08-30 11:45:28
4524
原创 ERROR:ABIs [armeabi] are not supported for platform.Supported ABIs are [arm64-v8a, armeabi-v7的完美解决方案
今天在运行NDK工程时出现ERROR: ABIs [armeabi] are not supported for platform. Supported ABIs are [arm64-v8a, armeabi-v7a, x86, x86_64].原因 ndk版本问题在ndk(v17)开始已经不在支持mips、armeabi、mips64等CPU架构只支持armeabi-v7a, arm64-...
2019-08-20 17:56:20
18736
2
原创 git如何删除已经提交的文件夹或文件
git如何删除已经提交到远程的文件夹或文件。问题描述今天在工作中,创建工程时一不小心把studio 的**.idea** 文件夹下的内容不小心提交到远程仓库,导致每次提交代码或者合并代码时都会有.idea中的许多文件,造成了许多无用功区合并代码。解决办法 git rm --cached 指定路径下的文件 如果是删除文件夹需要加上-rstep1.删除已经提交的文件或这文件夹, 删...
2019-08-12 18:03:51
10067
3
原创 git报错fatal: cannot create directory at ' XXX ' : No such file or directory的解决方案亲测有效
问题描述今天在windows上用git切换分支到dev时出现fatal: cannot create directory at '' : No such file or directory,不管是切换分支还是合并分支都会出现此问题,切换其他分支并没有问题,非常郁闷,拉下来代码什么也没干切换dev死活不行,很是无奈。查看找原因:在mac电脑上没有问题,在window上就不行,而且是仅仅切换de...
2019-08-05 16:45:50
33283
原创 java.net.BindException: Address already in use
问题今天启动工程时突然抱错java.net.BindException: Address already in use,原因是端口被占用解决方案我用的是Mac本,在终端下通过sudo lsof -i tcp:端口号查询被占用进程的PID,然后通过sudo kill -9 进程PID杀死改进程。如下图:让后重新运行项目即可解决。...
2019-07-29 10:33:32
4552
原创 Android studio运行时报错Cause: invalid opcode ba (invokedynamic requires --min-sdk-version >= 26)
Cause: invalid opcode ba (invokedynamic requires --min-sdk-version >= 26)studio 编译时没问题,运行时出现了Cause: invalid opcode ba (invokedynamic requires --min-sdk-version >= 26)错误,解决办法如下:在app的build.gradl...
2019-06-03 20:49:25
12258
6
原创 微信小程序使用真机或开发工具进行http请求开发测试亲测有效
微信小程序使用真机或开发工具进行http请求开发测试1使用微信开发这工具进行http请求的配置2:真机进行http请求微信开发这平台要求上线微信小程序配置的合法域以及网络请求名必须是https,如果是在开发测试阶段需要使用http请求,怎么办?对于真机和开发工具都有不同的配置去支持http请求。1使用微信开发这工具进行http请求的配置对于开发工具按下图配置即可进行http请求2:真机进...
2019-05-23 12:16:29
11837
6
原创 微信小程序选择器picker的range和range-key的用法
微信小程序picker的range和range-key的用法概述picker的range和range-key的用法1:在js文件中定义对象数组和下标2:在wxml中指定range和range-key总结概述最近在学习微信小程序中发现,官网中对选择器picker控件的range存放的是对象数组objectArray的用法描述的不是很详细,经过一番研究对picker控件的range和range-k...
2019-05-22 16:24:10
9706
2
原创 Suggestion: use a compatible library with a minSdk of at most 16, or increase this project's minSdk
今天在集成三方SDK是出现**Manifest merger failed : uses-sdk:minSdkVersion 16 cannot be smaller than version 19 declared in library [:device_sdk-release:]**详细信息如下:Manifest merger failed : uses-sdk:minSdkVersion ...
2019-05-16 14:31:51
15814
5
Android反编译工具包apktool、jd-gui、dex2jar
2020-09-30
Android jni ndk 工程
2019-04-30
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人