
Android框架&机制
文章平均质量分 75
Android框架&机制学习笔记
DeMonnnnnn
I decide what tide to bring. 我的命运,由我做主。
展开
-
Android Activity Results API自动化注册&极简使用方案
Activity Results APIActivity Result API提供了用于注册结果、启动结果以及在系统分派结果后对其进行处理的组件。—Google官方文档一句话解释:官方Jetpack组件用于代替startActivityForResult()/onActivityResult()。看完文档会发现,能代替startActivityForResult(),但也并没有好用到哪去。其实startActivityForResult()的调用并不麻烦,复杂页面的使用,做一下简单的封装即可。核原创 2022-03-04 14:29:22 · 4616 阅读 · 0 评论 -
Android获取敏感信息整改---基于Xposed的方法检测
前言前段时间315针对获取敏感的隐私信息(MAC地址)第一次要求整改时,我们使用了如下方案:将已知的友盟SDK放在同意隐私权限后再初始化。使用Hook&反射去拦截可能存在的其他第三方调用。但是整改提交审核20多天后还是被下架了,我们只能认为:Hook&反射去拦截的方案是无效的,检测时只要调用获取MAC的方法就会被认为是违规的。因此我们需要把App首次启动时所有会调用获取MAC的方法,放在同意隐私权限后再初始化。但是App启动时会默认初始化几十个库&第三方服务,我原创 2021-04-27 09:50:23 · 5091 阅读 · 4 评论 -
Android端FMOD&SoundTouch音频变声解决方案
经过查阅资料知道,目前主流的变声方案有两种:FMODSoundTouchFMODFMOD是一个强大的声音引擎框架,QQ、魔兽世界及其他很多游戏都是使用的这套框架,框架内包含几十种声音类型,还可以修改声音的频率、速度等等。1.进入FMOD download,下载Android端引擎库。2.将下载下来的FOMD引擎库中的Jar包,so库和jni c++文件,复制到项目中。3.编辑配置CMakeLists.txt-------------------------------------原创 2021-02-03 10:05:21 · 5291 阅读 · 15 评论 -
AndroidQ的文件操作解决方案
QFsolution适用于AndroidQ的简易图片选择器。基于协程的系统文件选择,系统拍照,系统裁剪。Uri转为File的究极解决方案。开始使用添加依赖allprojects { repositories { maven { url "https://jitpack.io" } }}dependencies { implementation 'com.github.iDeMonnnnnn:QFsolution:1.0.2'}添加权限 &原创 2020-11-05 18:22:23 · 1159 阅读 · 0 评论 -
Android RecyclerView多样式列表实践指南
前言在日常的开发中我们经常会在一个列表数据中展示多种样式。比如一个新闻列表,顶部是一个焦点Banner,然后是展示文章列表,文章中间可能插入某个图片广告,底部是一个加载更多/没有更多数据的加载状态视图。自定义ViewType实现熟悉RecyclerView的都知道,我们可以通过设置列表每个位置对应的viewType来加载指定的View,这也是所有多类型列表框架的基本实现原理。适用于数据...原创 2020-04-14 14:04:36 · 5180 阅读 · 0 评论 -
Android Retrofit2.0 网络请求固定入参
前言Android开发中进行网络请求时,我们很多时候会有有一些固定入参。比如:写在请求头的token令牌。一些第三方平台接口,请求时要求必须携带的平台key。这些固定入参每次请求都写在请求方法中的话,势必会非常的烦,如果能统一封装一下岂不美哉?在Retrofit2.0中我们可以通过Interceptor拦截器实现,然后在Okhttp3使用Builder添加Interceptor。示...原创 2019-12-10 11:16:45 · 782 阅读 · 0 评论 -
Android RecycleView实现横向,纵向都可滑动的列表
问题1.RecycleView默认是纵向滑动的,可以通过setOrientation(LinearLayoutManager.HORIZONTAL)设置为横向滑动。 //指定列表布局方式,默认是纵向垂直 recycleView.setLayoutManager(new LinearLayoutManager(this)); //指定列表线性布局,横向水平...原创 2019-06-11 15:05:14 · 10644 阅读 · 2 评论 -
Android RecyclerView动态addView错乱解决方案
问题总所周知,RecyclerView上下滑动造成数据错乱是一个非常令人头疼的问题。不仅如此,在RecyclerView中动态addView,也会如此,如下图: //RecyclerView中给RadioGroup动态添加RadioButton RadioGroup rgEvaluate; for (EvaluateItem item : evaluate...原创 2018-10-17 10:58:48 · 6093 阅读 · 5 评论 -
MVP模式&简单实例
网上关于什么是MVP模式的文章,一搜一大堆。这里也不班门弄斧了。MVP要素在MVP模式里通常包含4个要素: (1)View:负责绘制UI元素、与用户进行交互(在Android中体现为Activity或者Fragment); (2)View interface:需要View实现的接口,View通过View interface与Presenter进行交互,降低耦合,方便进行单元测原创 2017-03-13 17:28:19 · 3125 阅读 · 0 评论 -
Android DeMon_MVPRR的使用手册
前言本文基于Android 优雅的封装MVP模式下的Retrofit+RxJava主要讲解封装完毕后,如何使用。源码https://github.com/DeMonLiu623/DeMon_MVPRR权限 <uses-permission android:name="android.permission.INTERNET"/> <uses-permissi...原创 2019-08-19 17:26:26 · 450 阅读 · 0 评论 -
Android 优雅的封装MVP模式下的Retrofit+RxJava
前言在刚开始学Retrofit2.0+RxJava2.0时就尝试封装起来结合MVP模式使用,虽然简化了一些请求过程,但是实际使用还是有些麻烦,而且发现其中有很大的缺陷,所以就弃用了。随着工作到现在,接触了数个实际上线项目后,趁着工作闲暇就将其总结起来,重写之前的缺陷。Retrofit2.0+RxJava2.0的封装过程之前已经讲过,本文也是基于这个封装的,如有问题请戳:https://blo...原创 2019-08-19 16:24:20 · 1661 阅读 · 0 评论 -
Android 打造RxBus2.x的全面详解
前言在Anroid EventBus3.x的使用详解一文中我们全面讲解了使用EvenBus3.x解决进程/界面通信。 本文将介绍另一个东西—&amp;amp;amp;amp;amp;amp;gt;使用RxBus来实现进程/界面通信。 阅读本文,你需要提前了解RxJava,可以查看: 给 Android 开发者的 RxJava 详解 Android响应式编程框架—RxJava&amp;amp;amp;amp;amp;amp;amp;RxAndroid2.0使用笔记原创 2018-09-08 18:32:28 · 9741 阅读 · 0 评论 -
Android EventBus3.x的使用详解
前言在Android的日常开发中,我们经常会遇到进程和组件的通信问题。 一般我们可以使用广播,Handler等方式来处理。 但是广播存在麻烦,效率也不高,如果传递的数据是实体类需要序列化,那么很显然成本会有点高等问题。 Hander主要用于周期性消息传递,用于通信则会造成内存泄漏等诸多问题。 所以今天我们要介绍使用EventBus来解决这些问题。 EventBusGitH...原创 2018-09-08 15:45:42 · 759 阅读 · 0 评论 -
Android 实现PDF预览的全面解析
1.Office文档服务Office的文档服务,直接在WebView中使用即可。fileUrl必须为http://或 https://形式,文档必须是WordExcel或PowerPoint文档webView.loadUrl(&quot;http://view.officeapps.live.com/op/view.aspx?src=&quot; + pdfUrl));//pdfUrl必须为http:...原创 2018-07-24 15:29:37 · 8878 阅读 · 3 评论 -
Android7.0运行时权限的解决方案
运行时权限Android6.0以后Google不再允许开发者直接或许应用的权限,需要在用户知情的情况下授予权限,即需要用到权限的时候弹出一个权限提示框。 接下来我们将使用三种方式,完成运行时权限的申请:自己编写代码实现,完全搞懂运行时权限的申请。使用Google官方简化权限申请库easypermissions实现。使用结合RxJava的权限库RxPermissions实现。...原创 2018-06-22 18:48:42 · 11679 阅读 · 2 评论 -
Handler内存泄漏及其解决方案
几个概念Java垃圾回收机制(GC)Java使用自动垃圾回收机制,回收的条件就是对象是否被引用。也就是说如果对象处于不可到达状态就会被回收掉。Java四种引用Activity回收Activity被销毁的时候在onDestory()方法中,系统销毁了这个Activity的实例在内存中占据的空间。在Activity的生命周期中,onDestory()方法是他生命的最后一...原创 2018-05-02 11:57:26 · 2316 阅读 · 0 评论 -
Handler消息传递机制
Handler机制的由来Android的消息传递机制是另一种形式的“事件处理”,这种机制主要是为了解决多线程问题————Android只允许UI线程修改UI组件,这会导致子线程无法修改界面组件的属性。 但实际上在开发中,经常需要在新线程周期性的改变UI组件,这时需要借助Handler的消息机制。Handler类主要有两个作用:在新线程中发送消息Handler ha...原创 2017-05-16 20:29:45 · 829 阅读 · 0 评论 -
Android 简单总结Binder通信机制
前言Binder通信机制对于Android来说是一个十分重要的通信机制,因为基本每个App都会使用Client(Activity)-Server这两个组件,而这两个组件的通信通常情况下都是通过Binder来实现的。 网上关于Binder机制的讲解数不胜数,很多都详细讲到源代码,可是对于我这个基本没学过C++,也不怎么了解Linux的人来说看起来真是痛苦。 本文只是简单讲解Binder机制是...原创 2017-08-02 13:08:30 · 818 阅读 · 0 评论 -
HttpClient网络框架详解
优点HttpClient相比传统JDK自带的URLConnection,增加了易用性和灵活性(具体区别,日后我们再讨论),它不仅是客户端发送Http请求变得容易,而且也方便了开发人员测试接口(基于Http协议的),即提高了开发的效率,也方便提高代码的健壮性。HttpClient是Apache Jakarta Common下的子项目,用来提供高效的、最新的、功能丰富的支持HTTP协议的客户端编程工原创 2017-05-10 00:26:45 · 2082 阅读 · 0 评论 -
Android数据库框架GreenDAO的使用&Demo
GreenDao 介绍:greenDAO是一个对象关系映射(ORM)的框架,能够提供一个接口通过操作对象的方式去操作关系型数据库,它能够让你操作数据库时更简单、更方便。如下图所示:官网地址:http://greenrobot.org/greendao/github:https://github.com/greenrobot/greenDAO原创 2017-03-27 21:04:20 · 1762 阅读 · 0 评论 -
Android RecyclerView使用详解
RecyclerViwe与ListView对比ListView不足运行效率差,不使用ViewHolder等技巧,性能会很差。扩展性差,子布局效果完全一致。无法实现横向滚动,水平列表。RecyclerViwe优点增强版ListView,优化了ListView的不足可轻松实现ListView的效果,扩展性强,子布局可根据自身情况变化。可实现水平,瀑布流等列表样式。Android官方推荐使原创 2017-05-12 16:49:20 · 1642 阅读 · 0 评论 -
Android LitePal数据库框架的使用详解
SQLite在Android开发过程中,涉及到数据库方面的我们一般会使用内置的SQLite轻量级数据库。(Android 数据库存储SQLite总结) 为了进一步让我们优雅的使用,又提供了SQLiteOpenHelper(Android SQLiteOpenHelper的使用)帮助我们大大减少使用难度与工作量,对于SQlite你只需要掌握最基本的数据库知识,就能很方便使用。 但是对于今天要将的L原创 2017-08-03 17:01:12 · 1163 阅读 · 0 评论 -
JSON格式数据解析及GSON框架的使用详解
JSON优缺点优点:比起XML,JSON优势在于它的体积更小,在网络传输中可以更省流量。缺点:语义性较差,不如XML直观。JSONObjectJSON对象格式: {"id":1,"name":"Java"}一个{}里面的内容表示一个JSON对象。 一个”key”:value,表示一个键值。 String型的value要用”“修饰。 也可以:{"book":{"id":1,"name":原创 2017-05-14 22:32:10 · 959 阅读 · 0 评论 -
Android 常用框架大全
转自:https://segmentfault.com/a/1190000005073746 1. 缓存名称描述DiskLruCacheJava实现基于LRU的磁盘缓存2.图片加载名称描述Android Universal Image Loader一个强大的加载,缓存,展示图片的库Picasso一个强大的图片下载与缓存的库Fresco一个用于管理图像和他们使用的内存的库Gli原创 2017-09-05 14:28:36 · 15338 阅读 · 2 评论 -
Android响应式编程框架---RxJava&RxAndroid2.0使用笔记
RxJava是什么?官方GitHub地址:https://github.com/ReactiveX/RxJava RxJava is a Java VM implementation of Reactive Extensions: a library for composing asynchronous and event-based programs by using observable s原创 2017-09-05 10:46:44 · 7769 阅读 · 0 评论 -
Android 网络请求框架Retrofit2.0使用笔记
说明说起Retrofit必须要提到RxJava,但是本文只是简单介绍一下Retrofit的使用流程,为RxJava+Retrofit的实现做好准备,稍后会继续写一遍RxJava+Retrofit的博客笔记。 本文参考:http://gank.io/post/56e80c2c677659311bed9841Retrofit”改造” 适用于Android和Java的类型安全的HTTP客户端.原创 2017-09-05 18:09:26 · 1840 阅读 · 0 评论 -
Android Volley网络框架使用笔记
Volley简介及现状Volley是谷歌2013年在I/O大会期间推出的网络库。开发Volley是因为在Android SDK中缺乏一个用户体验良好的网络加载类。Volley自身的特点在于:适合去进行数据量不大,但通信频繁的网络操作;而对于大数据量的网络操作,例如上传/下载文件,其表现就不怎么给力了。由于OkHttp的优异的表现和性能,Volley使用量逐渐减少,更不要说OkHttp的升级版R原创 2017-08-28 15:17:52 · 633 阅读 · 0 评论 -
RxJava2.0&Retrofit2.0+MVP模式---DeMon_MVPRR框架使用及说明
前言之前总结了RxJava2.0&Retrofit2.0的使用,现在开发基本都会使用MVP模式,本来就打算写一篇MVP+RxJava2.0&Retrofit2.0的总结,然而写完RxJava2.0&Retrofit2.0后就在忙项目,终于忙完了就开始着手总结了。 然而在使用过程中发现,RxJava2.0&Retrofit2.0结合使用过程中需要导入大量的依赖,MVP的管理十分不便等等。 于是索性原创 2017-09-23 16:11:34 · 1918 阅读 · 2 评论 -
Android 优雅的让RxJava2.0+Retrofit2.0结合使用
前言本文参考: RxJava 与 Retrofit 结合的最佳实践http://gank.io/post/56e80c2c677659311bed9841与上文不同的是:本文采用最新的RxJava2.0与Retrifit2.0来实现,并针对于1.x不同的地方进行处理。针对请求过程进行的封装,额外增加缓存策略和请求头部处理。RxJava2.0使用笔记:http://blog.csdn.ne原创 2017-09-06 16:57:16 · 21061 阅读 · 16 评论 -
Android ViewGroup事件分发机制学习笔记
前言上篇文章我对View的事件分发机制进行了一次学习总结: Android View事件分发机制学习笔记 今天我们继续对ViewGroup的事件分发机制进行总结。首先我们来探讨一下,什么是ViewGroup?它和普通的View有什么区别?顾名思义,ViewGroup就是一组View的集合,它包含很多的子View和子VewGroup,是android中所有布局的父类或间接父类,像Li...原创 2017-08-21 15:54:15 · 676 阅读 · 0 评论 -
Android View事件分发机制学习笔记
前言我们都知道: 一个按钮在点击的时候有三种情况DOWN,MOVE,UP,即按下,按住,抬起三种情况,属于OnTouch事件。有的时候也有两种情况的时候LongClick,Click,即长按与点击,属于OnTouchEven事件。 你或许会感到奇怪按钮只能注册OnTouch,OnClickListener,OnLongClickListener并无法注册OnTouchEven...原创 2017-08-21 14:41:13 · 647 阅读 · 0 评论 -
Android AIDL进程通信机制详解
AIDL简介什么是AIDL?AIDL:Android Interface Definition Language。Android接口定义语言,是Android为方便进程间通信而设计的一门语言。 为什么要设计AIDL?Androi进程间通信除却AIDL还有多种方式,如: 1.Bundle/Intent传递数据 2.ContentProvider 3.文件/数据库 4...原创 2017-08-07 10:16:00 · 1184 阅读 · 0 评论 -
Android Okhttp3+MVP简单实战
Okhttp目前最新版本的是okhttp:3.4.1,也称为Okhttp3。 OkHttp是一个精巧的网络请求库,不仅在接口凤装饰做的简单易用,在底层实现上也自成一派。比起原生的HttpURLConnection有过之而无不及,现在已经成为广大开发者的首选网络通讯库。 特性支持http2,对一台机器的所有请求共享同一个socket内置连接池,支持连接复用,减少延迟支持透明的gzip压缩响应原创 2017-05-05 23:00:08 · 7717 阅读 · 3 评论