android开发
文章平均质量分 91
胖子爱你520
安卓移动应用开发工程师
展开
-
Android+jacoco实现代码覆盖率最正确的实现方式,没有之一!
前言 :jacoco是Java Code Coverage的缩写,是Java代码覆盖率统计的主流工具之一。关于jacoco的原理介绍的文章在网上有很多,感兴趣的同学可以去找别的博客看看,我这里不做赘述。它的作用是在安卓项目的代码覆盖率统计使用了jacoco的离线插桩方式,在测试前先对文件进行插桩,然后生成插过桩的class或jar包,测试(单元测试、UI测试或者手工测试等)插过桩的class和jar包后,会生成动态覆盖信息到文件,最后统一对覆盖信息进行处理,并生成报告。在我接到这个需求,需要统计开发人.原创 2021-04-13 14:59:09 · 99791 阅读 · 12 评论 -
Android获取桌面启动图标的位置
Android系统默认会将用户点击的“桌面图标”的位置发送给启动页MainActivity,以此来实现某些系统的过渡动画,所以在MainActivity中调用下面的代码是可以得到当前App的icon坐标的。public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstan原创 2020-05-24 16:44:54 · 3701 阅读 · 0 评论 -
Android利用反射下拉出通知栏
因为并没有公开的API提供这个功能,所以只能通过反射来调用了,简单demo如下:import android.content.Context;import android.os.Build;import android.os.Handler;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.Button;原创 2020-05-24 11:11:51 · 2535 阅读 · 0 评论 -
Android动态代理实现修改App版本号
应用场景通过这个案例,我们可以了解一下动态代理技术,并且能够在不改变版本号的情况下,动态修改版本号进行升级功能的测试,主要实现原理是通过动态代理getPackageInfo()来mock数据。一、创建PackageManagerHook代理类public class PackageManagerHook { /** * 越早hook越好,推荐在Application.attachBaseContext中调用 */ public static void hook(final Cont原创 2020-05-19 11:55:48 · 4517 阅读 · 0 评论 -
快速有效解决Fragment中onActivityResult不回调的问题
应用场景:MainActivity嵌套了四个Fragment,信誓旦旦的在Fragment中打开一个功能页QrCodeActivity,在QrCodeActivity页面setResult(RESULT_OK, resultIntent);但是我的Fragment中的onActivityResult方法并没有执行到回调,网上有很多种方法,有的很复杂,下面提供一种简单有效的解决方案。1.在Fragment对应的MainActivity中,重写了onActivityResult方法,确保加上super.onA原创 2020-05-18 20:03:36 · 5028 阅读 · 1 评论 -
Android设置android:elevation无效?那是你的姿势不对!
因为本人开发的一个app是套壳应用,所以MainActivity可能会被多个product用到,最开始在某一个product开发UI的时候用到了android:elevation这个属性,能够营造出阴影的效果,没有任何问题。过了一段时间另一个product也需要用到MainActivity,因为是套的是webview加载H5页面,H5开发小伙伴用到了一个绘制图表的功能,但是最终运行到app的时候发现图表无法正常展示,当时查了半天这个问题是因为Activity开启了硬件加速,当把MainActivity的an原创 2020-05-13 17:41:28 · 56264 阅读 · 0 评论 -
Android系统启动流程介绍
前言:本文只将最近看书了解到的知识点进行一个浓缩总结,并没有对其中流程进行详细介绍,都是些C/C++代码,流程也比较复杂,可能这篇文章对没看过源码的人会很懵逼,也不知道实现原理,后续有精力再整理吧~一、整体流程1.启动电源以及系统启动当电源按下时引导芯片代码从预定义的地方(固化再ROM)开始执行。加载引导程序BootLoader到RAM中,然后执行。2.引导程序BootLoader引...原创 2020-01-10 22:57:12 · 47982 阅读 · 0 评论 -
SharedPreferences使用性能优化
前言:SharedPreferences是开发中很常见的一个类,它的主要作用是持久化存储本地的一些轻量级数据,便于我们做一些简单的数据存储和逻辑判断,因为它简单和无结构化的特点,对于一般简单的业务场景来说,比数据库更加实用,本文主要说明一下在使用过程中的性能优化注意事项。1、避免存储大量数据SharedPreferences设计之初就是为了提供一个轻量级的数据存储方案,所以它不能和数据库相...原创 2020-01-05 15:36:15 · 59039 阅读 · 0 评论 -
好的技术文章收集整理,看这一篇就够了
前言:本篇博客仅作收集整理之用,将平时看到的比较好的文章整理一下,便于自己反复温故,也为他人提供便利,如有侵权,敬请联系我删除,感谢!1.Android图片加载库比较...原创 2020-01-04 14:52:05 · 48793 阅读 · 0 评论 -
Android App压力测试
前言:写这篇文章的原因呢,一是因为不少同学作为Android开发,很少会自己去做压力测试,不了解相关的技术,不知道压力测试是什么、怎么工作的;二是询问过身边的一些测试同学,他们进行压力测试的时候,很多情况只是执行monkey的随机操作,也有部分同学不会写测试脚本,那么本篇文章就应运而生了!一、背景1.为什么要进行压力测试?我们都知道一款产品上线之前都需要进行的一步操作就是测试验收,那么人...原创 2019-11-24 21:01:19 · 28820 阅读 · 0 评论 -
Android实现ViewPager视差动画效果及背景渐变过渡
在上一篇文章(TabLayout与ViewPager配合使用踩坑总结)中我记录了TabLayout搭配ViewPager使用过程中的踩坑过程,那么这一篇文章我来写一下ViewPager切换的视差动画效果及背景渐变过渡是如何实现的!一、视差动画实现惯例首先来看看ViewPager的切换效果:注意下方的三行文字,在切换的时候是有一个视觉差的,也就是它们仨不是以同一个偏移量移动,可以看到名称那一...原创 2019-11-09 12:14:27 · 67206 阅读 · 6 评论 -
TabLayout与ViewPager配合使用踩坑总结
前言:TabLayout是个神器,Android系统提供的一种控件,和ViewPager搭配使用,能帮助我们很快捷的实现头部Tab点击切换和ViewPager滑动关联滑动的动画效果,但是在我近期的使用过程中,还是发现了一些坑,耗费了一点时间,发现问题后简直被自己蠢哭了,特此记录一下使用中的坑,供大家参考。先来看看我们将要实现的一个效果吧:这是我们最终版的效果,那么其中的过程是什么样的呢?...原创 2019-11-08 20:07:21 · 79482 阅读 · 0 评论 -
Android基础编译流程
前言:该文章为学习笔记,记录Android知识点,大家一起学习。Android工程的构建打包是一个非常复杂的流程,涉及工程源代码、资源文件、AIDL文件,以及工程所依赖的库文件的编译转换。编译流程非常灵活,因此了解它的一些底层工作原理会很有帮助。从谷歌官网上找到一张典型的构建流程图:https://developer.android.com/studio/build/index.ht...原创 2019-10-31 11:29:11 · 81927 阅读 · 0 评论 -
Java中常见的类加载器及双亲委派机制的原理
相信不少的同学在面试的时候会被问到一个词:双亲委派,懂得同学懂,不懂的同学可能会尴尬一笑,那么今天咱们就来聊聊这个问题的原理,首先我们需要了解一下java中常见的几种类加载器。一、Java中常见的类加载器1.BootstrapClassLoader纯C++实现的类加载器,没有对应的Java类,主要加载的是jre/lib/目录下的核心库2.ExtClassLoader类的全名是...原创 2019-10-27 15:12:35 · 83633 阅读 · 2 评论 -
Android设计模式之单例设计模式的优缺点
转载请注明出处:http://blog.csdn.net/woshizisezise/article/details/50358924单例模式是运用频率很高的模式,但是,由于在客户端通常没有高并发的情况,因此,选择哪种实现方式并不会有太大的影响。即便如此,出于效率考虑,我们推荐使用以下两种方式的实现形式。1.Double Check Lock(DCL)实现单例DCL方式实现单例模式的优点是既能够在需原创 2015-12-19 17:02:49 · 2493 阅读 · 0 评论 -
Android中IntentService实现原理详解
写在前头:近期或多或少的去了一些比较优秀的企业面试,现在的企业要求比较高,当然也可能和你面试的岗位有关,一定的工作年限需要有对应的知识的深度和宽度,并且会发现一个特性,就是面试官非常注重你的基础知识的理解和掌握能力,比如说去面试Android开发,但是可能会问你很多的java知识,包括Http和Https,还有网络通信,H5数据交互等等知识点,那么我们应该如何应对这些呢,答案只有一个,多看多...原创 2018-04-14 15:01:14 · 32750 阅读 · 0 评论 -
Activity被回收掉之后的网络请求回调处理方法详解
想起写这么一篇博文的前提是上周去面试了一家公司,其中有这么一个问题印象深刻,结合当时在网上看到的解决办法我就说了一个错误答案,结果当场就被面试官给指出了错误,所以回来后和我的领导一起讨论了这么一个问题,他提出了一个很好地解决思路,于是乎我便写了这么一段代码,对于能够真正的解决这个问题的,我相信这是最正确的,如果有更好的,我收回这句话,哈哈哈~问:Android中进行网络请求,如果当网络...原创 2018-04-09 21:18:19 · 23797 阅读 · 2 评论 -
Android自定义实现PullToRefreshRecycleView刷新加载控件原理和使用
写在前头:PullToRefresh这个下拉刷新上拉加载更多的控件相信大家并不陌生,Github上搜索也有很多相关的控件,并且star数量也不低,但是呢如果你想拥有很高的自由度的话,那么还是敌不过自己实现一个或者你能把开源的控件源码看明白然后基于上面自己修改成自己需要的样式,那么我就是干了这件事,在网上看到一篇博客,然后下载源码看了看,然后就想将它进行改造一番,那篇文章的地址我是真的找不到了...原创 2018-06-01 11:58:51 · 28233 阅读 · 1 评论 -
解决android studio编译后部分代码单词显示不全,吃字漏字的问题
今天碰到这个问题是个很偶然的情况,如图所示: 其实这个时候都单词是完整的,按住control+鼠标能够显示完整,但是就是看上去漏字,在网上查了一些方法,什么重启电脑+AS,重新编译,清除build文件夹内容再编译等等骚操作以后,都没有解决这个问题,后来我咨询了一些别的开发小哥哥小姐姐,终于有一位大佬提供的方案能完美的解决这个问题,秘技如下: 按照图中所示的操作,能完美解决吃字漏字的问题...原创 2018-07-12 11:33:19 · 32475 阅读 · 3 评论 -
Android解决MyScrollView包含RecyclerView刷新数据会滑动到RecyclerView顶部的问题
首先要说说MyScrollView是什么东西,其实这个控件大家用过的话都会了解,Android原生自带的ScrollView中如果包裹了RecyclerView或者ListView等控件的话,那么运行效果不尽如人意,主要体现在RecyclerView或ListView等数据不能完全显示出来,这是因为系统内部对这些并没有处理,所以这个时候MyScrollView基于ScrollView进行了改造,使...原创 2018-10-31 13:16:12 · 38301 阅读 · 1 评论 -
AndroidMainfest.xml文件中allowBackup=true有什么风险?
前言:最近接到公司安全中心同学的邮件告知开发中的一款App存在数据备份及隐私泄漏的风险,具体为AndroidMainfest.xml文件中allowBackup=true,之前一直没有专门了解过这个属性的作用及有什么隐藏的风险,于是上网搜索了一下相关资料,发现这个属性还挺有意思的,包括属性的影响到底有多大和潜在风险啥的,于是记录此文,谈谈自己的理解。准备工作在我们开始演示之前,先做一些准备...原创 2019-01-02 20:25:45 · 36493 阅读 · 1 评论 -
如何正确的判断当前的Fragment是否对用户可见?
前言:写这篇文章的背景是最近做项目处理Fragment中曝光埋点逻辑时,发现当我切换到其他的Fragment时,页面从不可见到可见的过程中,已经隐藏的Fragment的onResume方法仍然会执行,究其原因是因为Fragment的生命周期是跟随其载体Activity的生命周期走,所以这个时候载体MainActivity从onPause->onResume过程中,会触发每个已经存在了的Fr...原创 2019-03-17 21:18:37 · 44811 阅读 · 0 评论 -
用LiveData实现新的事件总线
背景:在Android系统中,我们开发的时候不可避免的会用到消息传递,页面和组件之间都在进行消息传递,消息传递既可以用于Android四大组件之间的通信,也可用于主线程和子线程之间的通信。从一开始Android书本中学习的Handler、BroadcastReceiver、接口回调等方式,到我们现在广为使用到的greenrobot家的EventBus,Square家的Otto,还有依托响应式编程...原创 2019-05-22 10:59:16 · 56222 阅读 · 0 评论 -
Android实现多渠道打包,动态替换包名、Icon、图片等资源,解决因applicationId和BuildConfig路径不匹配的问题
前言:Android实现多渠道打包,这个问题并不新鲜,解决方案是固定的那么几种,网上的博客也有很多,我这里只是针对近期开发中遇到的坑进行整理,方便自己方便他人。一、初识productFlavors无疑要实现一个壳工程打出不同样式的包,这个技术解决方案Android已经替我们考虑到了,也就是使用Gradle中的productFlavors,在做定制或适配的时候,不需要建立多个工程、来回切换项...原创 2019-07-17 15:19:12 · 68048 阅读 · 5 评论 -
Android实现真正的344格式化手机号码输入框
前言:在最近一个项目的登录页上,输入手机号码这个输入框,UI稿要求显示344样式的格式化手机号码,例如“130 1234 5678”,在之前其实也有过类似的需求,但是在实现344格式化手机号码的过程中或多或少碰到不少坑,当时也没有深究,以项目排期紧为由将需求拍回去了,折中的方案是设置输入框的android:inputType=“phone”,android:maxLength=“11”,这是最常...原创 2019-08-08 20:40:57 · 29032 阅读 · 5 评论 -
Thread使用start和run方法启动线程有什么区别?
写在前头:近期或多或少的去了一些比较优秀的企业面试,现在的企业要求比较高,当然也可能和你面试的岗位有关,一定的工作年限需要有对应的知识的深度和宽度,并且会发现一个特性,就是面试官非常注重你的基础知识的理解和掌握能力,比如说去面试Android开发,但是可能会问你很多的java知识,包括Http和Https,还有网络通信,H5数据交互等等知识点,那么我们应该如何应对这些呢,答案只有一个,多看多...原创 2018-04-14 12:35:05 · 31209 阅读 · 12 评论 -
Android Eclipse使用.aar文件攻略
今天想在很久没用的Eclipse上使用之前在AS中使用过的AndroidEventBus功能,当我把AndroidEventBus.aar文件以jar包文件的形式导入到libs文件夹下并且Build Path成功后,原以为能够直接使用,后来发现当我在敲下代码时,并不能找到所导入的类,于是上网搜索了一番,原来aar文件是AS的文件,Eclipse并不能直接使用,需要的话得自己转换一下,经过最终试验,可原创 2016-06-30 14:19:24 · 13748 阅读 · 2 评论 -
Android使用MediaRecorder和Camera实现视频录制及播放功能整理
这两天产品经理向我丢来一个新需求,需要在项目里添加一个视频录制的功能,正好是我没做过的,于是研究了一番。在网上搜索了一些案例,但是都是不完整的,要不就是分辨率有问题的,要不就是声音有问题的,要不就是实现了视频录制但是没有播放功能的,所以我就想自己做一个,整合一下,来个较完整版的。PM的要求如下:实现录像功能,录完后可以预览播放,视频清晰并且大小不能大,支持删除视频功能……好吧,开始干活了,首先来分析原创 2016-07-11 13:37:38 · 54639 阅读 · 37 评论 -
安卓解决从系统安装完成打开和返回桌面打开启动两次应用的问题
转载请注明出处:http://blog.csdn.net/woshizisezise/article/details/51598684 前言:如题,安卓的这个问题,真的很少有人关注到,但是一旦你知道而别人不知道的情况下,不自觉的你的逼格就比别人高一档了,我说这话绝不是逗你,不信一起来看看,你真的知道这种情况吗?今天我要和大家分享的是安卓的一个问题,极少数人知道,我也是在之前做完项目的时候,测试原创 2016-06-07 10:51:38 · 5610 阅读 · 6 评论 -
AndroidEventBus(事件总线)了解+实战体验
大家好,今天咱们来说说本人最近使用到的一个新的开源工具类,也就是今天的主人公AndroidEventBus,叫做事件总线,刚开始看到这个名字的时候我以为就是之前使用到的EventBus,于是乎好奇的我就接着研究了一下,果然它是类似EventBus的消息处理机制,提供了更好的使用性,我便希望把它集成到我正在开发的工程里,因为工程较大以及代码较为繁琐,我不敢轻易的集成与使用,所以我先写了一个简单的例子验原创 2016-04-23 10:50:34 · 7290 阅读 · 3 评论 -
安卓Picasso实战体验--图片加载、缓存、回收新选择
转载请注明出处:http://blog.csdn.net/woshizisezise/article/details/51484278大家好,很长一段时间没有更新文章了,忙着在适应自己的新工作,今天才偶尔得闲,能够给大家分享一点干货,当然了,我写的这篇文章没有像其他的大牛们分析的那么具体到位,主要是我个人对Picasso这个新的图片加载框架的使用体验和感受的一点分析,也会说到一点他的工作原理啦,那么原创 2016-05-28 16:15:45 · 2691 阅读 · 2 评论 -
Android中listview extends Linearlayout
由于 scrollview 套 listview 会有很多问题,网上很多人用 LinearLayout 模拟 listview, 也可以设置 adapter。很多人直接继承 BaseAdapter, 可能是偷懒吧, 其实没有必要, BaseAdapter 里面有很多其它无用的方法被继承,其次 getView 等方法的签名可能不太符合, 直接定义一个接口或抽象类更好。这种方式在界面中有很多动态 lis转载 2015-08-17 14:52:37 · 643 阅读 · 0 评论 -
Android判断是否有网络连接及相关设置
很多时候我们可能需要对当前手机或者模拟器的联网状态进行判断,如果是没网状态下,我们会给出相应的UI界面提示,提醒用户设置网络,进一步可以根据手机现在的网络状态判断是3G网络还是WIFI网络,当一个应用是视频等高速耗费流量的时候,我们需要对此进行提示告知用户是否需要切换网络,这个时候我们需要拿到系统服务的消息,判断当前的一个网络状态,利用下面的代码就可以解决这个问题。/** * 检测手机网络是否可用原创 2015-08-11 16:17:05 · 757 阅读 · 0 评论 -
Android如何实现点击一次返回键返回桌面而不是退出应用?
有时候我们的应用我们希望他点击一次返回键的时候不是退出应用而是返回到桌面,比如像QQ和微信等聊天软件,在主界面点击返回键的时候不是退出应用而是返回到桌面,那么怎么能够实现这种需求呢?其实也很简单,只需要重写onKeyDown()这个方法,在方法里面实现返回的代码,这样就可以实现这个需求了,具体代码如下所示:@Overridepublic boolean onKeyDown(int keyCode,原创 2015-08-11 16:52:08 · 12779 阅读 · 0 评论 -
Android自定义ImageView实现图片缩放滑动,双击放大缩小,多点触控缩放
转载请注明出处:http://blog.csdn.net/woshizisezise/article/details/47445605大家好,最近研究学习了一个自定义控件,ZoomImageView,安卓自定义缩放图片的控件,支持双击放大双击缩小,多点触控拉伸放大与缩小,并且很好的控制了图片的位置,不会出现缩小图片后图片左右出现空白的情况,缩小到默认值的时候,图片会居中填充窗口,可以推荐大家学习一下原创 2015-08-12 15:34:11 · 7778 阅读 · 2 评论 -
Android使用Universal-ImageLoader在ListView中加载网络图片简单示例
大家好,最近在问答专区上看到了很多朋友问如何加载网络图片或者加载网络图片失败的问题,因为之前没有整理过类似的文章,但是也不能把别人的文章地址复制过来吧,这也是对自己的不尊重是吧,hiahia~,所以决定立即写一篇博客,介绍一下Universal-ImageLoader这个强大的工具的用法,虽然不是很详细,但是我自己写了个小demo,代码比较详细,大家也看的明白,如果有不懂的可以继续发私信我,我会一一原创 2015-08-16 16:18:38 · 2005 阅读 · 0 评论 -
FastJson与Gson转换成json串丢失精度问题
转载请注明出处:大家好,最近在项目开发过程中碰到一个比较坑的问题,导致与后台服务器联调花了比较多的时间,所以在这里记录一下这个坑,如果有人碰到了,也可以提供了一个比较好的参考方法。问题如下:我的javaBean对象存储了一个字段是float类型的,恰巧服务器传给我的一个值是以“.0”结尾的,当我用fastjson解析这个对象的时候,将解析完成后的json串发给服务器,期待返回正确的数据,但是很显然,原创 2016-08-22 14:18:31 · 6268 阅读 · 0 评论 -
android实现抓取网络访问数据的方式(一)
大家好,今天给大家介绍的是一款网络抓包工具,其实我们绝大部分开发人员都用得上,市面上也有很多的抓包工具,但是有好的当然是想给大家普及一下嘛,这篇文章在我的微信公众号也发布过,有兴趣的朋友可以在文末添加我的微信公众号,更多精彩内容同步更新哟~好了,废话不多说咯,这个工具呢就是Charles,mac同步也有,也许有的朋友听说过,也许有的朋友现在使用的就是这个,那好,我来说说为啥我一直钟情于原创 2016-08-26 17:10:41 · 2208 阅读 · 0 评论 -
android实现LED发光字效果实战
转载请注明出处:大家好,这一篇博客来教大家一个类似于LED闹钟显示屏样式的小案例,UI比较美观,文末会提供下载相关资源地址供大家下载,首先我们来看一看这个案例的运行效果。 正常运行在手机中时,效果很流畅,gif上可能是由于录制完转码的时候,速度调快了,所以看上去速度比较快,这都是小事情,接下来我们来看看源码是如何实现的。1.代码很简单,主要是利用xml布局文件的几个属性,并且通过设置我们特定的原创 2016-10-26 11:31:24 · 4901 阅读 · 1 评论 -
Android为什么推荐使用SparseArray来替代HashMap?
SparseArray也许你没听过,那正好今天就来学习一下咯,这也是Android官方推荐使用的,所以我们需要了解一下他的优势和劣势在哪些地方。首先SparseArray用来和HashMap做比较,在安卓项目中,你新建一个HashMap对象,注意下面会有下划线,里面有提示 翻译成白话文的意思就是建议使用SparseArray替代HashMap来获得更好的表现。我们都知道HashM...原创 2018-02-24 16:31:09 · 9661 阅读 · 1 评论