- 博客(58)
- 资源 (12)
- 收藏
- 关注
原创 Android Studio Build model...卡住问题——正确的设置/取消代理(工具的细节问题)
我们在Android Studio的偏好设置里面设置了代码,但是想取消代理时,如果只是在下面配置代理的位置取消,那你就年轻了,还得需要在user_name/.gradle/gradle.propterties文件中删掉gradle的代理,否则可能有些朋友在公司网络下,就没法访问内网的maven仓库了,会导致编译失败错误。
2023-03-25 23:42:00
178
原创 RemoteServiceException: can‘t deliver broadcast 问题分析
源码层面分析RemoteServiceException: can't deliver broadcast 问题的根本原因。
2022-12-08 00:21:59
1321
7
原创 Kotlin中两种定义静态方法的方式对比
最近工作中遇到一个问题,通用的工具方法,出于kotlin和java代码中都能方便调用,于是想定义到静态工具类中。但是发现使用Companion对象+@JvmStatic的方式定义的方法,通过工具转成字节码再反编译之后,查看还是跟Java中的静态方法不一样,于是改成了顶层函数的方式声明,故出此文做下对比,以记录两种定义静态方法的差别。
2022-10-10 00:08:01
666
原创 Leanback控件的item中存在可上焦子View时的寻焦逻辑处理
LeanBack的VerticalGridView中嵌套HorizontalGridView结构,中间的item一般作为一个整体来进行寻焦和响应事件,但是在其内部添加可上焦的子View之后,会存在寻焦和边界检测的问题。
2022-09-29 23:33:02
96
原创 记录下代码重构怎么做更稳妥的思考
1. 追本溯源,清楚逻辑2. 代码未动,方案先行3. 及时记录改动点、影响面4. 改完一个点,要自测自测自测最小化commit,message要规范清晰
2022-07-12 00:19:22
112
原创 Gradle开启R8反混淆对不上问题解决记录
记录使用Android-SDK/tools下的proguardgui工具,在开启R8编译后,根据mapping.txt混淆没效果问题。
2022-06-25 12:40:18
742
原创 OkHttp报unexcepted end of stream on...错误分析
OkHttp报unexcepted end of stream on...错误分析和解决方法。
2022-06-24 12:30:27
5620
2
原创 Android中View绘制原理分析
1.Activity/Fragment/Dialog,Window和View的三类核心成员的关系2.View和WindowManager的关系2.ViewRootImpl的作用2.View绘制是从何时开始的?是怎么分发到我们View上的?3.View/ViewGroup的三大工作阶段4.理解了View的工作原理后再看自定义View的实现思路View与ViewRootImpl的绑定5.小结
2022-04-23 01:22:51
157
原创 jvm类加载机制学习基础(一)
一.类加载机制理解 二.什么情况下会触发类的加载?三.类加载会经历哪些阶段?四. 类加载时类成员的加载顺序五. 类加载器的双亲委派模型
2020-12-25 21:06:12
1506
2
原创 从源码角度学习ThreadLocal原理
1.ThreadLocal基本介绍相信使用java语言做开发的同学,肯定多或多或少了解过ThreadLocal,简单来说就是一个“以当前Thread对象作为key的key-value存储结构,能实现多线程的读写安全”。那么他究竟是怎么实现的呢,它的实现源码并不是很长,下面直接从源码上来分析。先看一个使用ThreadLocal存取数据的例子:1.1 直接使用无参构造函数创建对象//使用无参构造函数创建ThreadLocal实例,默认值为nullfinal ThreadLocal<Integer
2020-05-17 20:50:50
111
原创 Service组件StartService()方式启动流程分析
1.前言AMS是Android四大组件工作的核心服务类,Activity和Service的启动过程均由其完成。2.ContextImpl->startService(): @Override public ComponentName startService(Intent service) { warnIfCallingFromSystemProcess(...
2020-03-29 15:49:52
451
原创 Java线程内存模型的理解(一)
1.概述 在Java中,因为有jdk的封装,线程使用起来很方便,new一个线程然后start就好了。但是由于存在多线共享同一个数据的原因,经常会有多线程安全的问题。比如在A线程修改了某个变量的值,B线程是不知道得,等到会写到线程的主内存时,最终变量的值已经不是正确的了,再比如,整型变量a,在两个线程中进行自增操作(a++),最后也不会是我们...
2020-03-05 22:18:58
180
原创 布局优化之ViewStub源码分析
1.前言 对于Android的单线程模型来说,把控好主线程中的操作时是至关重要的。布局复杂了,很容易引起卡顿,或者某些情况下界面展示慢的情况,我们都知道ViewStub能实现懒加载,减少布局渲染时间,那么它究竟用了什么方法来实现的,这里做一个学习记录,加深印象。2.如何优化布局 ViewStub是不可...
2019-10-31 23:34:58
408
原创 Java反射基础总结
1.前言Java语言特性中,最经常的一个就是反射机制,最近开发有用到,所以再这里整理一篇学习笔记。简单理解反射就是在运行时获得程序中每一个类型的成员和成员的信息,即使是private修饰的也是可以获取到的。2.基础使用基本API//java.lang.Class类中://1.根据类全限定名获取类的Class对象public static Class<?> forName...
2019-10-20 16:43:29
384
转载 jdk7之前,匿名内部类访问局部变量加final修饰的问题(综合两种说法)
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...
2019-09-15 16:57:54
428
原创 java虚拟机之运行时内存分区理解
一.jvm内存区域的划分二. 对象的四种引用类型 1.强引用 2.软引用: SoftReference 3.弱引用: WeakReference 4.虚引用: PhantomReference 5. 四种类型引用特性总结
2019-07-20 16:39:52
277
原创 从源码角度学习EventBus
最近在EventBus的源码,看完基本流程,做一些记录EventBus的几个主要流程(暂未考虑线程的threadMode):1.EventBus类结构分析2.注册流程分析3.post方法实现分析4.三种Poster和ThreadMode 5.解注册做了什么?6.EventBus现有的不足与完善思路7.小结
2019-05-04 13:30:40
113
原创 Android面试题:消息机制与异步相关
1.Android中Looper的实现原理,为什么调用Looper.prepare()就在当前线程关联了一个Looper对象,它是如何实现的。2.简述Andriod如何处理UI与耗时操作的通信,有哪些方式及各自的优缺点3.Handler、 Thread 和 HandlerThread 的差别4.主线程中的Looper.loop()一直无限循环检测消息队列中是否有新消息为什么不会造成ANR?5.Handler
2017-09-02 09:10:15
261
原创 Android中Activity四种启动方式
一,任务栈的理解 参考自:https://developer.android.com/guide/components/tasks-and-back-stack.html 1.闲扯两句 一个Android应用是包含若干个Activity的,每个 Activity 均应围绕用户可以执行的特定操作设计,并且能够启动其他 Activity。 这些Activity之间可以借助In...
2017-08-05 22:49:29
1071
原创 Android面试题:对JNI和NDK的理解
JNI和NDK是面试经常被问到的热点问题,在这里做一个记录。 1.阐述你对JNI的理解 JNI的全称是Java Native Interface(Java本地接口)是一层接口,是用来沟通Java代码和C/C++代码的,是Java和C/C++之间的桥梁。通过JNI,Java可以完成对外部C/C++编写的库函数的调用,相对的,外部C/C++也能调用Java中封装好的类和方法。 Java的优点是
2017-06-04 12:31:03
10273
原创 Linux Shell编程之算术运算
最近在学习Shell编程,但是发现写脚本的过程中,语法规则很讲究,多以在这里做一个学习总结,希望给初学者一个参考。 shell编程中的算术运算 shell中和其他编程语言一样,支持+、-、*、/、%等算数运算符。 1算术扩展((expression))和$[expression] (1)bash不用另外生成进程即能进行整数运算。bash使用((…))命令和$[…]变量语法进行算数运算
2017-05-10 21:00:40
610
原创 com.android.dex.DexIndexOverflowException: Cannot merge new index 65730 into a non-jumbo instructio
今天编译工程,生成apk的时候遇到一个没见过的问题,查了很多也是了很多问题,最后解决了,虽然不知道内部的原因,不过在此做一个记录,希望能帮到遇到同样问题的开发者。 报错提示: Error:Error converting bytecode to dex: Cause: com.android.dex.DexIndexOverflowException: Cannot merge ...
2017-05-01 01:19:00
1041
原创 Android中添加Module依赖注意问题
在开发中经常会以添加Module依赖的方式拓展其他的模块,这样的方式给我们的开发提供了很大的方便,但是也增加了编译的时间成本。但是直接在build.gradle中添加Module依赖往往会遇到Manifest文件合并有错误的情况,这时候就需要我们对被加入依赖的Module进行一些修改。
2017-04-05 20:34:25
4789
原创 计算二进制中的1的个数
面试题计算二进制中的1的个数题目: 请实现一个函数,输入一个整数,输出该二进制表示中1的个数。分析:这是一道简单但是很常见的笔试面试题,目的是看编程人员是 否熟悉二进制操作,因为在计算机的世界里只有01,任何的运算最后都是二进制的运算,所以如果熟练二进制的常见操作可以让我们编写的代码效率更高。
2017-03-28 09:22:43
362
原创 Android四大组件之Service(一)
Service和IntentService的使用1.Service的适用场景 2.Service的注意要点3.Service的生命周期及使用方法4.IntentService的使用及与Service的差异
2017-03-08 15:07:57
264
原创 Git常见操作命令
Git 操作git 命令创建本地仓库git init获取远程仓库git clone [url]例:git clone https://github.com/you/yourpro.git创建远程仓库// 添加一个新的 remote 远程仓库git remote add [remote-name] [url]例:git remote add origin https://github
2017-02-21 13:53:51
308
kotlin-for-android-developers-zh.pdf
2017-10-03
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人