Android杂谈
文章平均质量分 79
关于Android各种问题的那些事
快乐肥柴
致力于做一只快乐肥柴
展开
-
关于空闲任务IdleHandler的那些事
关于空闲任务IdleHandler的那些事 Android的消息机制Handler已经是老生常谈了,包括Android Framework层的应用启动过程都涉及消息机制,肥柴在“一切从Android的Handler讲起”专栏中已经讲了很多。 对于Android中的消息处理机制来说,MessageQueue和Looper、Message是非常重要的对象,而IdleHandler是MessageQueue的静态内部接口。那什么是IdleHandler呢?一、IdleHandler IdleHan原创 2022-05-15 16:28:24 · 970 阅读 · 2 评论 -
关于Android Handler同步屏障那些事
关于Android Handler同步屏障那些事 前一段时间,肥柴突然听到一句:Handler同步屏障,一脸懵逼,啥玩意? 于是就去了解并总结了一下Handler的异步消息和同步屏障的相关知识,只能说,肥柴确实学到了。一、Handler Message种类 首先我们来了解一下Handler的Message种类: 1、普通消息 2、异步消息 3、屏障消息 其中普通消息又称为同步消息,肥柴平时发送的消息基本都是同步消息,而我们又基本很少有发送异步甚至屏障消息的需求,所以就没怎么了原创 2022-05-14 17:14:52 · 1104 阅读 · 0 评论 -
关于WebView设置键盘配置的那些事
关于WebView设置键盘配置的那些事一、可达鸭需求 写这篇文章是为了记录最近在项目中遇到的一个强硬的需求,我方产品(以下称,可达鸭)提出如下需求:对于填空题做题页面,点击输入框区域需要默认弹出数字键盘并且可以切换到其他键盘输入其他字符。 这里有个前提,作答页面由H5呈现,也就是在WebView上显示。肥柴思索半天,回复可达鸭:牡蛎。可达鸭就一句话:我不管,我就要,给我做出来。 于是肥柴开启了苦逼的探索之旅。二、使用EditText实现该功能 不管怎么说,都是输入框,于是肥柴从Edi原创 2021-06-06 19:25:48 · 855 阅读 · 2 评论 -
Android杂谈:Jetpack简介
Android杂谈:Jetpack简介一、什么是Jetpack Jetpack 是一套库、工具和指南,可帮助开发者更轻松地编写优质应用。这些组件可帮助开发者遵循最佳做法、让开发者摆脱编写样板代码的工作并简化复杂任务,以便开发者将精力集中放在所需的代码上。 Jetpack被Google推出的原因在于:规范开发者更快更好的开发出优质应用。二、Jetpack有什么(简单介绍) 那么Jetpack有什么工具呢?来一张总览图。 对上述的工具,下面只简单的介绍普通Android常用的工具如下表。原创 2021-02-23 20:49:20 · 609 阅读 · 0 评论 -
关于方法数越界的那些事
关于方法数越界的那些事一、方法数越界问题 在Android中单个dex文件所能包含的最大方法数为65536,其中包含Android FrameWork、依赖的jar包以及应用本身的代码中的所有方法。一般来说一个简单应用的方法数很难达到65536,但是对于一些比较大型的应用来说,65536就很容易达到。 当应用方法数达到65536后,编译器就无法完成编译工作并抛出类似下面的异常。com.android.dex.DexIndexOverflowException:method ID not in [原创 2020-07-12 20:46:59 · 297 阅读 · 0 评论 -
关于crash捕获的那些事
关于crash捕获的那些事 Android应用不可避免地会发生crash,也称之为奔溃,其可能由于Android系统底层的bug,也可能是由于不充分的机型适配或者是糟糕的网络状况。当crash发生时,系统会kill掉正在执行的程序,现象就是闪退或者提示用户程序已停止执行。 Android为了能够获取应用的crash信息,提供了一个解决方案。在Thread中有一个方法setDefaultUncaughtExceptionHandler,如下所示。public static void setDefa原创 2020-06-17 14:50:27 · 268 阅读 · 0 评论 -
关于属性layout_weight及其与Measure过程的那些事
layout_weight:值表示。要和wrap_content(推荐用0dp替代)、match_parent配合使用。需要注意的是,。举个例子,屏幕宽度为W,设置两个按钮的layout_width=wrap_content,那么按钮1宽度BW1,按钮2宽度BW2,若增加设置layout_height=1,那么按钮1最终宽度BW1+(W–BW1–BW2)/2;按钮2最终宽度BW2+(W-BW1-BW2)/2。原创 2020-05-02 15:12:56 · 410 阅读 · 1 评论 -
关于Activity中获取View宽高的那些事
关于Activity中获取View宽高的那些事 现在有一个业务需求,需要在Activity已启动的时候做一个任务,该任务需要获取某个View的宽/高。直接的想法是从Activity的onCreate或者onResume里面去获取这个View的宽/高。但是实际上在onCreate、onStart、onResume中均无法获取正确的宽/高信息。 原因在于View的Measure过程和Acti...原创 2020-05-02 14:17:08 · 798 阅读 · 0 评论 -
关于Android单元测试与最常用的Junit4的那些事
Android单元测试与最常用的Junit4一、Android单元测试单元测试是针对类中的某一个方法进行验证是否正确的过程,单元就是指独立的粒子,在Android和Java中大都是指方法。二、使用单元测试的原因使用单元测试可以提高开发效率,当项目随着迭代越来越大时,每一次编译、运行、打包、调试需要耗费的时间会随之上升,因此,使用单元测试可以不需这一步骤就可以对单个方法进行功能或逻辑测试。...原创 2019-03-04 11:49:37 · 627 阅读 · 0 评论 -
关于ButterKnife组件化开发排坑的那些事
Android模块化开发与ButterKinfe组件化开发排坑一、Android模块化:组件化与插件化由于项目发展到一定程度,随着人员的增多,代码会越来越臃肿,这个时候就必须进行模块化的拆分。模块化是一种指导理念,其核心思想就是分而治之、降低耦合。而在Android工程中实现模块化的途径有两种(两大流派):一个是组件化,另一个是插件化。组件化和插件化对比图如下图(图引用至Android彻底组...原创 2019-02-20 17:53:24 · 422 阅读 · 0 评论 -
关于R.java和ButterKinfe独特的R2.java的那些事
Android的R.java和ButterKinfe独特的R2.java一、Android的R.java文件Android项目中,当Android应用程序被编译,会自动生成一个R类,包含了所有res/目录下资源的ID,如布局文件、资源文件、图片的ID等。即在Android项目中会通过自动生成一个R.java文件的方式来保存项目中所有资源文件的标识。在主项目中生成的R.java中的资源声明是一...原创 2019-02-20 17:42:57 · 4751 阅读 · 0 评论 -
关于Android Studio各种中文乱码的那些事
关于Android Studio各种中文乱码的那些事 笔者之前遇到了各种Android Studio的各种中文乱码问题,网上的各种方法也尝试过,有些方法确实有效,而有些方法莫得效果,所以想起,之后遇到这些乱起八糟的乱码问题,可以总结一下有效的方法,以供使用。 不过以前的问题,鉴于笔者的“老年健忘症“,所以被坑了之后没心没肺的忘记了,所以就先写最近遇到的一个问题。读者遇到其他问题可以提出来,...原创 2020-03-29 14:36:42 · 551 阅读 · 7 评论 -
关于Android发布项目到JCenter仓库的那些事
关于Android发布项目到JCenter仓库的那些事一、引入 最近待在家无聊,开始搞一些小东西,做了一个多样式的进度加载类库(目前拥有的样式有闹钟进度加载view、肥柴进度加载view以及肥柴无进度加载view),想着没事干不如搞搞发布自己的项目到远程仓库试试。于是就有了如下踩坑经历。二、为何不用JitPack 发布项目到远程仓库,有几种方式(这里除去本地仓库以及建立私人仓库):Ji...原创 2020-03-20 16:56:00 · 411 阅读 · 0 评论 -
关于Android Gradle依赖方式的那些事
Android Gradle的依赖方式一、Android Studio2.X与3.X依赖对比二、Android Studio2.x依赖说明PS:括号内为对应3.X版本的依赖compile(api)使用compile依赖方式依赖的库将会参与编译和打包。provided(compileOnly)只在**编译时有效,不会参与打包,**可以在自己的module中使用该方式依赖。比如com...原创 2019-03-04 10:58:18 · 598 阅读 · 0 评论 -
关于Android软键盘的那些事
Android软键盘相关问题一软键盘自动弹出和关闭软键盘的自动弹出虽然上述代码可以使得软键盘自动弹出,但是对于界面比较复杂的情况的时候,软键盘可能无法正常的弹出,需要延迟加载,即在界面加载完成之后弹出软键盘。延迟加载可以使用Handler或者定时器schedule来实现。软键盘的关闭关闭软键盘的代码如下:二、进入Activity自动弹出软键盘为了实现进入某个包含了Edit...原创 2019-02-21 17:14:24 · 278 阅读 · 0 评论