为了账号安全,请及时绑定邮箱和手机立即绑定

精讲Android设计模式-单例模式

为什么要使用单例模式单例的优点1.只有一个实例,节省开销2.全局使用方便,同时避免频繁创建和销毁使用单例的注意点:要避免造成 内存泄漏常用的单例模式单例不仅要满足线程安全,还要注意防止序列化产生新对象。如果单例实现了Serializable接口,就必须加入如下方法(枚举单例不用这么做,因为JVM能保障这点):private Object readResolve()  throws ObjectStreamException{    return INSTANCE;...

1100浏览
0推荐
0评论

一劳永逸快速配置测试账号切换AccountSwitcher

由来由于在项目中,经常需要切换测试账号来测试不同的场景,每次都要手动输入那些烂熟如心的账号和密码,就想着有个一键切换账号来避免手输,而且如果能连界面都不写的话就更好了,并且能在以后的任何项目中直接配置使用,不用每次都去重新写界面,于是乎就产生了AccountSwitcher。效果展示效果.gif接入implementation 'com.sdj.kkaka:account-switcher:1.0.3'debugAnnotationProcessor 'com.sdj.kkaka:account-switcher-compiler:1.0.3'releaseAnnotatio...

1218浏览
0推荐
0评论

数据结构基础-优先队列和堆

优先队列概念优先队列可以看做队列的一种,区别在于,在优先队列中,元素进入队列的顺序可能与其被操作的顺序不同。他支持插入(Insert)和删除最小值(DeleteMin)操作(返回并删除最小元素)或删除最大值(DeleteMax)操作(返回并删除最大元素)。20190131174534.png优先队列应用以操作系统的进程调度为例,用户使用手机过程中,来电的优先级比较高,我们不要求所有的元素有序,只处理当前键值最大的那个就可以了。在这种情况下,我们需要实现的只是删除键值最大的元素(获取优先级最高的进程)和插入新的元素(插入新的进程)。其他例子:数据压缩:好夫曼编码算法最短路径算法:Dijkstra算法事件驱动仿真:顾客排队算法选择...

1438浏览
0推荐
0评论

RxJava2 + Retrofit2 完全指南 之 动态Url/Path/Parameter/Header

前言因为有需求,才会有解决方案。本篇文章就是为了解决以下类似问题:统一为所有接口加上一个参数,如appType或则version统一为请求加上一个header请求path变更了,需要按照一定规则将path进行替换实现实现思路也是比较简单的,只需要自己实现一个Interceptor,然后加在其它Interceptor之前,具体代码如下:/**  * 自定义的拦截器  * 1. 实现baseUrl的动态替换  * 2. path的替换  * 3. 增加parameter...

2609浏览
0推荐
0评论

利用 MediaCodec 进行转码

首先关于转码的流程:视频文件 ——> 解封装 ——> 解码 ——> 编码 ——> 封装 ——> 转码后的视频文件那么转换到 MediaCodec 中对应的流程即:视频MediaExtractor 解封装 video 数据,MediaCodec 解码器解码压缩视频数据,并输入到 SurfaceSurface 中的原始视频数据输入到 MediaCodec 编码器进行编码对编码器输出数据进行封装(不分块的情况下:使用 MediaMuxer 进行封装。 分块的情况下:使用 FFmpeg muxer 进行封装)音频MediaExtractor 解封装 audio 数据,MediaCodec...

1449浏览
0推荐
0评论

【Fun Twitter系列】自由平等?美国闪电火炬手拒绝传递给伊朗用户

Fun Twitter每日最新大咖观点,看我就够了!2019/02/27 期本期作者:三月既望01福布斯评论员Joseph  Young宝盛集团(Julius Baer Group AG)是瑞士三大私营银行之一,计划为其客户提供加密服务。SEBA(译者注:Seba...

705浏览
0推荐
0评论

Android适配总结之FileProvider

日常夜拍1 概述由于前段时间做的应用都是车机上的(Android6.0),并不需要太多适配。想想到现在,Android已经到9了,貌似我好久都没做过适配了,这些适配的工作还是有必要做一些记录。参考资料鸿洋_: Android 7.0 行为变更 通过FileProvider在应用间共享文件吧官方文档:Android 7.0 行为变更通常开发中,适配Android7.0主要就是适配其中文件访问权限。比如调用系统拍照,应用更新后安装功能都是涉及到。在官方7.0的以上的系统中,尝试传递 file://URI可能会触发FileUriExposedException本文内容主要参考鸿洋_的文章,仅作记录。2...

3143浏览
0推荐
0评论

【Android】Window和WindowManager那些事儿

每一个Activty都包含一个Window对象,Window作为抽象类,具体的处理逻辑都在其子类PhoneWindow中来处理,PhoneWindow将DecorView设置为应用窗口的根View,DecorView继承自FrameLayout,是最顶层视图,DecorView只有一个子元素为LinearLayout。代表整个Window界面,包含通知栏,标题栏,内容显示栏三块区域。盗张图.png下面我们先插播一段setContentView的流程,有利于后面对于Window的理解。1.setContentView的流程我们在Activity的onCreate里添加布局文件setContentView时,其实在DecorVie...

1362浏览
0推荐
0评论

单例模式总结

单例模式1.懒汉模式public class Singleton{    private static Singleton instance = new Singleton();    private Singleton(){     }    public static Singleton getInstance(){...

934浏览
0推荐
0评论

查漏补缺之详解项目目录中的结构文件

“Project”模式项目结构“Project”模式项目结构.gradle和.idea这个目录放置的是AS自动生成的文件,一般不管它。app存放项目中的代码和资源,我们进行的开发工作都在这个目录中进行。build这个目录一般不需要操作,包含一些编译自动生成的文件。gradleGradle是一个基于Apache Ant和Apcahe Maven概念的项目自动化构建工具。它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,抛弃了基于XML的各种繁琐配置。这个目录包含gradle wrapper的配置文件,使用gradle...

1122浏览
0推荐
0评论

动态修改应用icon和name

前言  电商项目遇到节日,如果内容上没有变更,只是需要更换应用icon和名称顺应节日。不可能去发一个版本,成本太高,所以可以动态的去修改应用的icon和name;思想  应用集成推送,当节日的时候收到推送,在后台默默的修改掉icon和名称,使用activity-alias来配置。activity-alias语法及声明<activity-alias android:enabled=["true" | "false"] ...

1417浏览
0推荐
0评论

Builder模式,今天你用了嘛

1.前言在设计模式里,建造者模式你可能听起来有点陌生,但是一提到Builder模式,你可能就会稍微有点印象。这个印象可能并不是来源于你曾经写过Builder模式。而是在平常编程的时候,总会碰到一个xxx.Builder()类。这个Builder类就是我们经常在无意中用到的Builder模式,也成为建造者模式。2.常见的Builder模式我们总会在无意中用到一些Builder模式,你可能现在想不起来,那么我可以举几个例子稍微提醒一下你!Retrofit(这里面有的参数是我自己封装的类。你只需知道,Retofit的构建是通过,自身的Builder类来构造的就行)Retrofit.pngOkHttpClientOkHttpClien...

1696浏览
0推荐
0评论

浅谈Java适配器模式

假期刚结束不久,也没什么好写的,今天就水下文章,讲讲设计模式对开发时的影响,做开发到现在,感觉设计模式对开发的影响还是挺大的。这次就简单谈谈适配器模式。可能适配器模式感觉比较鸡肋,但是用到的地方还挺多的,特别是合作开发的时候。1.适配器模式适配器模式,作为连接两个接口的桥梁。这个概念感觉有点那啥,很少用接口的朋友可能就没有什么感觉,经常面向接口编程的朋友比较能产生共鸣,简单来说,就是写一个适配器(转换器)来对接对象。2.适配器模式使用java适配器模式有两种,类适配器和对象适配器(1)类适配器demo类适配器主要是使用继承的方式连接两个接口。我们假设对接接口A和接口B。先写接口Bpublic interface&nb...

1259浏览
0推荐
0评论

Java中的锁原理

image.png最近在复习Java并发相关内容,突然发现日记本躺了一篇一年前写好的文章,估计是写完,忘了点发布了,image.png随着集成电路越来越发达,多计算核心的机器大行其道,为了解决多个并行执行分支对某一块资源的同步访问,操作系统层面提供了 互斥信号量...

1597浏览
0推荐
0评论

基于 Android NDK 的学习之旅-----Java 调用C

我认为:1、 有些公司开发Android项目的时候, 许多组件功能可能是C中已经实现了,所以我们没必要同样的功能又在java中实现一遍。例如我之前做的一个项目,公司C引擎已经很成熟了,所以直接在java中封装好接口,由C去实现。2、 C的速度一般是java的10-20倍把,有些对速度要求高的就需要在C中实现。例如我以前在Android项目中有要求批量(10000++)生成MD5的值,由于测试对java中直接生成的效果不满意,所以后面就换成C去实现了。3、 …..不罗嗦了,直接开始吧。1、主要流程a)      Java声明本地接口 add(int x, int y)b)    ...

1024浏览
0推荐
0评论

Android 华为凹口屏基本了解

      Android8.0 以后【凹口屏】得到迅速发展,目前已有了挖孔屏/水滴屏/刘海屏等各式各样的屏幕,究其根本依旧是【凹口屏】,单华为一个品牌就涵盖了基本所有类型,而对于屏幕适配也是不可逃避的问题。小菜单独对华为各型号屏幕进行适配尝试,部分方法可通用到其他品牌设备,为 Android 标准 SDK 方法。      其实凹口屏已经出现很久了,对于获取凹口宽高的方式也有很多种,但是以前主流的凹口屏中凹口位置一般是位于屏幕正上方,但随着发展,也出现了在左上角的挖孔屏样式。相应的,Android 9.0 即 SDK28...

1275浏览
0推荐
0评论

【Android】20.0 权限处理(二)——访问其他程序数据:读取联系人信息

1.0 在我的上一篇,相当于运行时权限的初体验,这一篇主要是怎么访问其他程序的数据,比如接下来的这个例子,将手机联系人应用中的联系人数据,读取出来,在APP中展示。2.0...

1212浏览
0推荐
0评论

查漏补缺之MD5Utils

MD5的全称是Message-Digest Algorithm5(信息-摘要算法),MD5算法简单来说就是把任意长度的字符串变换成固定长度(通常是128位)的十六进制字符串。在存储密码过程中,直接存储明文密码是很危险的,因此在存储密码过程中,直接存储明文密码。在MD5Utils类中,创建一个md5()方法对密码进行加密。首先通过MessageDigest的getInstanc()方法获取数据加密对象digest,然后通过该对象的digest()方法对密码进行加密。/**  * MD5的全称是Message-Digest Algorithm5(信息-摘要算法),...

1750浏览
0推荐
0评论

Android 高级UI6 高级渲染

Paint 画笔的高级技能渲染...

903浏览
0推荐
0评论

Flutter 即学即用系列博客——05 StatelessWidget vs StatefulWidget

前言上一篇我们对 Flutter UI 有了一个基本的了解。这一篇我们通过自定义 Widget 来了解下如何写一个 Widget?然而 Widget 有两个,StatelessWidget 和 StatefulWidget,我们要继承哪一个?下面让我们跟着文章来探索一番。目录1. StatelessWidget我们先来看下继承的 Widget 为 StatelessWidget 的情况。第一步:新建一个文件 bold_text.dart这里文件名后面后缀 .dart 可带可不带文件名多个单词组成用下划线分隔。这里我们演示直接在 lib 文件夹下面创建,实际项目记得文件夹结构的组织哦~第二步:import 系统包一般自定义...

1224浏览
0推荐
0评论
首页上一页1234567下一页尾页
意见反馈 帮助中心 APP下载
官方微信