Android
文章平均质量分 93
Anonymous-OS
我行我素,一名草根程序员
展开
-
手写简单的【观察者模式】
1、创建回调接口public interface IObserver { void onResult(String result);}2、创建调度中心public class Observer { private Observer() { } private static class SingleTon { static Observer INSTANCE = new Observer(); } public stat原创 2020-10-27 17:52:20 · 8625 阅读 · 0 评论 -
Android插件化方案实践
插件化概述1、插件化和组件化的区别组件化是将一个app拆分为多个模块进行协作开发,每个模块都是一个单独的组件,这些组件可以相互依赖,也可以单独调试运行。但是最终发布的时候,这些组件会合并在一起,组成一个整体的apk,这就是组件化开发。插件化开发和组件化是有所不同的,插件化开发就是将一个app拆分成多个模块,但是每一个模块都是一个apk,最终打包的时候将宿主apk和插件apk分开打包,独立分发。宿主apk发布到市场,插件apk通过动态下发到手机存储空间,然后进行插装操作,宿主apk就能够加载..原创 2020-07-27 10:18:59 · 5684 阅读 · 2 评论 -
移动端的架构演变
一、架构设计目的通过设计使程序模块化,做到模块内部的高聚合和模块之间的低耦合,这样做的好处是使得程序在开发的过程中,开发人员只需要专注于一点,提高程序开发的效率,并且更容易进行后续的测试以及定位问题。对于不同量级的工程,具体架构的实现方式必然是不同的,所以对于移动端来说,逐渐演变出MCV、MVP、MVVM三种结构模式。二、MVC架构模式 图1 单向通信1、工作模块View(视图):...原创 2020-07-24 16:49:24 · 4804 阅读 · 0 评论 -
Android分包那些事(突破65535)
公司的项目又是一个阶段性的完成,又到了总结项目经验的时候了,最近我并没啥可总结的,就是遇到了一个65535的问题,还是记录一下吧。一、说道65535,网上的解决方案很多,但是再多,也不如自己亲身经历一把,最近我就遇到了,下面来看一下报的错误:我看了很久没看明白这是啥意思(不好意思,我的英语很垃圾),看表面应该是RxJava的问题吧,但是这不应该的,抽了一颗烟,考虑了许久,还是没看出原创 2017-04-13 18:35:44 · 5640 阅读 · 0 评论 -
Retrofit踩坑之Delete请求
来到一家新的公司,时间直接不够用了,版本出的飞起,很长时间没总结自己最近学到的东西了(其实也没学什么)!公司的后台是一个搞php的大兄弟,我们进行对接。在对接的过程中,鄙人不才,一般都是用的POST和GET的请求居多,确实对DELETE请求接触不多,这次后台的大兄弟就直接让我提交DELETE请求来进行实体的删除操作。那就来呗,不就是和POST差不多嘛,代码如下:@DELETE("bean/原创 2017-03-02 18:41:18 · 21167 阅读 · 9 评论 -
RxJava的封装和研究
对于RxJava,现在有大量的博客来讲解,但是学会了RxJava不代表它好用,得适当的封装一下,达到我们的开发要求。RxAndroid的常规用法:API.Retrofit().getListInfo(params) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(n原创 2016-11-28 17:39:49 · 7687 阅读 · 7 评论 -
WabView详解二:Android与JS交互的实现过程
在类似于电商平台的APP中,有时候涉及到复杂的逻辑,我们有必要来在我们的APP中内嵌一些H5页面,但是内嵌并不是代表我们什么也不管了,有时候我们需要在H5中来调起Android原生控件,这就需要使用Android与JS交互进行数据通信。先看一下效果图:底部为白色的是WebView,页面上只写了一个Button用来和Android端通信,点击页面上的Button,Android端会接原创 2016-11-23 11:40:06 · 3189 阅读 · 2 评论 -
GreenDao3.0使用详解
随着移动端的业务量的增大和用户体验的提高,SQLite的需求很明显了,大大小小的项目几乎成了必备,用我们项目经理的话来说:1、不用管他什么数据,为了体验,先缓存一下!2、什么?网络不好导致的?看什么,缓存啊!!!真不知道他是在哪里听到的这个词,唉!在他看来,缓存是如此简单的一件事情,当然,缓存其实并不难,就是有点麻烦而已!之前我一直是用Realm,目前Realm被人称为移动端的原创 2017-01-04 10:47:13 · 23495 阅读 · 10 评论 -
WebView启动支付宝客户端支付失败的解决办法
目前在做一个用App加载H5网页,然后在网页中调起支付宝客户端支付,蚂蚁金服的开发文档上明确写有支付宝支持手机网站支付,所以那就集成呗,但是做完之后出现了一个问题,不知道是不是Android端集成出现了细节问题,然后再使用支付的时候,支付宝客户端具有一定的失败率,所以失败了只能采用收银台支付,虽然可以实现支付,但是体验方面还是达不到公司的要求。在支付宝官网上我们可以看到这个界面他说原创 2017-01-02 12:00:43 · 22066 阅读 · 14 评论 -
Retrofit在客户端保持Cookie(服务器的Token验证)
移动端项目和网站还是多多少少的区别的,拿这个用户登陆过期验证这个流程来说吧,一般的网站是不会做处理的,他们访问的时候会自动验证Cookie的有效期的,移动端这样处理就不行的,他是不会保存Cookie的,所以我们在做项目的时候,一般来说,服务器的哥们都会在登陆成功之后给你返回一个叫做Token的东西,其实就是验证授权,这样,你用移动端每一次网络请求都把这个Token当做公共参数传递给服务器,这时候服原创 2016-12-10 14:24:07 · 12529 阅读 · 7 评论 -
Android提示BOM错误排查
今天遇到了一个很奇葩的问题,Android程序一直运行良好,今天再发新版本的时候进行打包发布,但事打包的时候提示了一个错误,看一下截图:这是什么鬼?ByteOrderMark?百度了一下,BOM是微软了一个编码方式,但是跟我有鸟关系啊,并且程序提示的错误是在一个Bean的实体类中,如下:难道是后台大神给我传的json字符串有问题?给我的json字符串的编码有问题?前后台联调原创 2017-04-18 11:17:35 · 2164 阅读 · 0 评论 -
android下拉刷新和listview冲突解决方案
常见的下拉刷新都是带有一些自定义的listview、gridview和webview,我们导包直接用就行了,但是为什么他们要自定义一些常用的控件呢?直接在外边套用不行吗?类似于SwipeLayout,他是在ViewGroup的层面上动刀,可以嵌套任何的组件的,那么我们先去看一个效果你就知道了。效果图:我之前用的都是封装库,没有在吗碰到过这总情况,但是自己写了一个下拉刷新之后原创 2016-12-10 09:51:27 · 2983 阅读 · 0 评论 -
WebView详解一:打造优雅的WebView
一、使用WebView并不需要开通网络权限 WebView可以加载本地Html文件和加载网络的Url路径,对其都有很好的支持二、Xml使用<WebView android:id="@+id/blog_detail_webview" android:layout_width="fill_parent" android:layout_height="wrap原创 2016-11-23 17:09:34 · 7630 阅读 · 4 评论 -
okhttp3.0忽略https证书
最近公司项目需要,网络协议支持https原创 2017-06-14 12:46:37 · 44185 阅读 · 14 评论 -
Glide3.0加载https图片
相关文章:okhttp3.0忽略https证书在上一节说到的是用okhttp如何忽略证书来访问https请求,但是访问是可以访问了,但是图片却加载不出来,这是什么原因原创 2017-07-06 11:22:44 · 11055 阅读 · 1 评论 -
WebView调用微信H5支付
相关文章:okhttp3.0忽略https证书好长时间没有写博客了,感觉自己颓废了不少,这也取决于移动端逐渐趋于稳定的原因,随着自己公司业务的不断扩大,还是会遇到种种问题,最近手上一个需要是app内H5进行微信支付,所以就着手搞一搞。一、微信支付已经开放出了H5支付的场景,但是微信的目的是在浏览器中直接进行微信支付,所以手机浏览器对微信H5支付支持的是很好的,但是他的文档说不建议在app中原创 2017-12-07 13:14:44 · 45704 阅读 · 20 评论 -
Okttp3.0简单的二次回调封装
今天闲来无事,把网络框架简单的回调封装了一下,其实这种方法比较简单,相信很多人都会了,新手朋友可以了解一下。如果你使用的是AndroidStudio开发的话,你可能知道studio使用Okhttp的版本目前是3.2,到底有什么区别呢?下面来看一下原创 2016-04-03 16:21:41 · 3474 阅读 · 0 评论 -
Retrofit多文件上传
说到网络框架,从入门级别的android-async-http->Volley->Okhttp->Retrofit+RxJava,之前我比较钟情于android-async-http,使用简单暴力,后来Google在API中移除掉了HttpClient的相关的支持,我又大力使用Okhttp。第一眼看Retrofit的感觉是:哼,啥玩意啊,如果变换一个参数,起码改两个地方,看起来不灵活,难用,但原创 2016-11-13 21:28:54 · 34789 阅读 · 4 评论 -
内存溢出和内存泄漏
1、内存溢出 out of memory,是指程序在申请内存时,没有足够的内存空间供其使用,出现out of memory;比如申请了一个integer,但给它存了long才能存下的数,那就是内存溢出。2、内存泄露 memory leak,是指程序在申请内存后,无法释放已申请的内存空间,一次内存泄露危害可以忽略,但内存泄露堆积后果很严重,无论多少内存,迟早会被占光。memory l原创 2016-03-23 13:36:49 · 1581 阅读 · 0 评论 -
Android属性动画Interpolator(插值器)
本篇文章转载于点击打开链接,请尊重原创Interpolatort通常在动画中使用,主要来改变动画变化率。常用的有下面几种Interpolator,下面图文解说下:AccelerateDecelerateInterpolator开始与结束的地方速率改变比较慢,在中间的时候加速AccelerateInterpolator开始的地方速率改变比较慢,然后开始转载 2016-04-20 10:44:52 · 1503 阅读 · 0 评论 -
程序的核心—重视模块化
重视模块化,重视抽象但不滥用我刚接触编程的时候,在网上看到许多大牛写程序都十分注重模块化,因此我就下意识的模仿他们;后来看SICP,知道了抽象的好处,因此在写程序的时候会仔细思考抽象的问题。这些对我都有着非常大的帮助。在一篇讲述程序员代码行数瓶颈的博客中(程序员的成长和代码行数的关系)提到,程序员在2k行、20k行、200k行等若干程序规模时会遇到瓶颈,如果不用更科学有效的方法原创 2016-04-20 00:03:26 · 1067 阅读 · 0 评论 -
Android的性能优化
一款好的AndroidAPP不仅在功能上让用户接受,用户体验也是很重要的一部分,什么叫体验,也就是性能上的稳定。如何做到让自己开发的APP性能上提高,这是很多程序员很苦恼的一件事情,下面结合我自己对Android开发的理解,浅谈一下Android的性能优化的几个方面,有什么地方说的不对的,欢迎读者耐心指出。性能优化方案一:主线程中的耗时操作。google在Android4.0版本以后增加了原创 2016-04-19 23:09:59 · 568 阅读 · 0 评论 -
RecycleView+CardView实现卡片式列表(附带Item回调监听)
自从Google的Material Design风格的出现,一直都Android开发程序员的追捧,我也比例外,没事也喜欢研究研究Google的这种设计,没事喜欢写点Demo测试一下效果,今天给大家带来的是RecycleView和CardView结合使用实现的卡片式列表布局,其中回调封装了RecycleView的Item的点击事件。大家都知道,RecyclerView注重的不是布局,而是回收与复原创 2016-05-12 15:50:31 · 6935 阅读 · 0 评论 -
Android图片压缩
好长时间没写博客了,最近忙着毕业的事。其实我一直想写一篇关于图片压缩的博客,写博客其实也是为了整理一下自己学过的知识和思路作为记录。Android的图片压缩不仅是在移动开发中是难点,在任何语言中处理起来都不是特别简单。一般来说分为两种:尺寸压缩和质量压缩,这两种是最常见的,在APP开发过程中图片上传最是很常见的了,现在市面上的手机像素都非常高,比如Vivo手机一张图片差不多得15M左右,这对于原创 2016-05-10 12:44:26 · 2250 阅读 · 1 评论 -
Android关于OOM的解决方案
在Android平台上面,应用程序OOM异常永远都是值得关注的问题。通常这一块也是程序这中的重点之一。这下我就如何解决OOM作一点简单的介绍。 首先,OOM就是内存溢出,即Out Of Memory。也就是说内存占有量超过了VM所分配的最大。 怎么解决OOM,通常OOM都发生在需要用到大量内存的情况下(创建或解析Bitmap,分配特大的数组等),在这样的一种情况下,就可原创 2016-04-14 10:25:19 · 973 阅读 · 0 评论 -
Android调用WebService详解
我们在Android开发中,需要掌握的不仅仅是http的请求方式,有时候我们还需要去调用服务器端的Web Services,Web Services到底是什么东西的?怎么来用呢?因为项目需要,所以花了一个晚上的时间研究了一下,下面把学到的给大家分享出来。一、Web Services在很久之前就有了,所以他并不是一个新鲜的东西。Web Services是建立在通用协议的基础之上,如HTTP、SO原创 2016-04-25 20:48:19 · 5675 阅读 · 0 评论 -
Activity的启动模式
启动模式简单地说就是Activity启动时的策略,在AndroidManifest.xml中的标签的android:launchMode属性设置;启动模式有4种,分别为standard、singleTop、singleTask、singleInstance;Activity启动模式设置:Activity的四种启动模式:1. standard模式启动模式,每次激活Activity原创 2016-03-23 09:34:30 · 372 阅读 · 0 评论 -
Android属性动画使用详解
我们平常用到的大多数都是传统动画,简单的平移、旋转、透明度等动画效果,但是这种传统的动画有一个致命的缺点,就是不是真正意义上的改变了属性,而是效果出现了,属性没有变化。举个例子,你平移一个按钮,在按钮上加一个点击事件,那么等按钮平移完了之后,点击事件的响应其实还是在原地的,你点击它平移之后的地方是没有响应的。Google也考虑了这一点,所以在在3.0之后加入了一个属性动画的概念,让我们一起领略一下原创 2016-04-20 10:07:28 · 1632 阅读 · 1 评论 -
项目解耦必备-EventBus的详细讲解(一)
很早之前,就想写一篇关于EventBus使用的文章,一直没有时间,最近项目不太忙,抽出一些时间把之前的项目中的技术沉淀一下,抽取出一些东西写成文章与大家分享一下。在做项目的时候,难免会碰到一个问题,就是在不同线程或者不同的组件中进行通信,Android提供了一个Intent可以实现这种功能,但是对于项目来说耦合性太高,所以出现了一个叫做EventBus的机制来处理这些问题。废话不多说,直接切入原创 2016-03-23 14:01:44 · 2560 阅读 · 0 评论 -
AS中manifest合并失败的问题
今天在导入一个依赖的时候,一直编译不通过,报的错误如下面截图所示:原创 2016-11-17 16:25:11 · 2432 阅读 · 0 评论 -
Android链式结构封装
相关文章:《Okttp3.0简单的二次回调封装》在java面向对象语言中,一贯喜欢采用函数式编程,把一个复杂的逻辑分解成几个函数来相互调用来达到自己的业务逻辑,一直用过okhttp的盼望能够有不知道有没有对okhttp的链式结构感兴趣呢?今天没事,试着写了一下。拿我们最熟悉的AsyncHttpClient这个网络请求框架做例子:一、AsyncHttpClient的常规用法Async原创 2016-11-04 10:40:16 · 4296 阅读 · 0 评论 -
项目解耦必备-EventBus3.0的简单讲解
相关文章:《项目解耦必备-EventBus的详细讲解(一)》EventBus3.0出来很长时间了,但是我还是想写一下,当作自己的笔录Gradle引入:compile 'de.greenrobot:eventbus:3.0.0-beta1'EventBus2.0使用是这样的:public void onEvent(MessageEvent event) { log(e原创 2016-10-12 15:19:22 · 921 阅读 · 0 评论 -
AlertDialog和Toast那点事
Dialog和Toast开发Android的程序员来说肯定是不陌生的,这个平时我们会经常用到的,经过我的研究发现了一点小的技巧,知道的朋友勿喷!一、Dialog 来说一下Dialog的基本用法,相信大家经常使用了: AlertDialog.Builder mAlertDialog = new AlertDialog.Builder(MainActivity.this);原创 2016-07-29 15:27:01 · 2213 阅读 · 0 评论 -
Android自定义View二(加载进度动画)
关于自定义View,打算一直写一个系列,把整个流程自己也梳理一遍,和一些朋友一起从零学起。相关文章:《Android自定义View(一)(Paint和Canvas的基本使用)》昨天公司让写一个关于百分比进度条,我一贯的尿性,开始网上看一些开源的控件,但是发现,尼玛代码太长了吧,写的好啰嗦啊,算了,自己写一个吧,于是开始陷入深深的思考之中,写出来之后和大家分享一下这个原创 2016-07-06 15:36:47 · 1098 阅读 · 0 评论 -
onActivityResult的各种"坑"
最近写了一个东西,其中需要用到Activity的回传值的问题,当时没有用消息总线,也就是EventBus,只是用了startActivityForResult() 和 onActivityResult() 方法来传递或接收参数,谁知道遇到了各种坑,下面给大家分享一下。一、执行了startActivityForResult()方法之后,第二个Activity还没有做任何操作,onActivity原创 2016-05-16 16:42:40 · 2160 阅读 · 0 评论 -
Android自定义View(一)(Paint和Canvas的基本使用)
Android开发中自定义视图是走向高手的必经之路,如何绘制漂亮的图形呢,让我们一起走进Android绘图的世界想要自定义视图,第一步就是Paint和Canvas的基本使用,下面让我们来一起学习绘图中画笔和画布的基本使用。一、Paint属性 setAntiAlias: 设置画笔的锯齿效果。 setColor: 设置画笔颜色 setARGB: 设置画笔的a,r,p,原创 2016-04-28 23:05:14 · 1191 阅读 · 0 评论 -
自定义Toast样式
好长时间没写博客了,刚换个新工作没几天,今天公司小组要求写一个自定义的Toast,工作交给我了,其实并不难,几分钟搞定,把代码发出来当做记录一下把。废话不多说,上效果:结构目录:代码解析:1、toast.xml布局很简单就是一个ImageView和TextView横向排列,不解释:<LinearLayout xmlns:android="http://sche原创 2016-06-16 12:47:55 · 16562 阅读 · 3 评论 -
项目解耦必备-EventBus的详细讲解(二)
相关文章:《项目解耦必备-EventBus的详细讲解(一)》《EventBus使用详解(二)——EventBus使用进阶》 请尊重原创在项目解耦必备-EventBus的详细讲解(一)文章中我们只解释了EventBus的onEventMainThread()订阅函数的用法,但是其实还有三个方法我们没有说,下面就详细说一下其他的三个函数是什么意思。在Eve转载 2016-04-21 15:07:25 · 809 阅读 · 0 评论 -
AsyncTask与Handler的区别
AsyncTask实现的原理和适用的优缺点AsyncTask,是android提供的轻量级的异步类,可以直接继承AsyncTask,在类中实现异步操作,并提供接口反馈当前异步执行的程度(可以通过接口实现UI进度更新),最后反馈执行的结果给UI主线程.使用的优点:简单,快捷过程可控 使用的缺点:在使用多个异步操作和并需要进行Ui变更时,就变得原创 2015-12-22 16:54:39 · 547 阅读 · 0 评论