
Android开发知多少
文章平均质量分 77
本专栏主要介绍:
Android开发
Java开发
二蛋和他的大花
喜欢电脑,喜欢创新。
展开
-
跟我学企业级flutter项目:手把手教你制作一款低耦合空页面widget
前言如何开发一款易用的,并且可以扩展的空页面呢?那么今天我将带领大家手把手开发一款可扩展的空页面。开发前注意事项1、定义好空页面状态2、可扩展思想(用抽象或基类替代实体)3、抽离出空页面的结构空页面展示开始搭建一、页面分析空页面需要元素有:展示图片展示文案展示刷新按钮页面功能点:文案可自定义图片可自定义按钮可隐藏wiget作用范围:可包裹其他widget不包裹其他widget二、定义状态2.1 几种状态enum EmptyStatus { fai原创 2022-03-21 17:25:39 · 1619 阅读 · 1 评论 -
跟我学企业级flutter项目:如何封装一套易用,可扩展的Hybrid混合开发webview
Flutter作为基础的应用,如果要在flutter 中嵌入webview 去做Hybrid混合开发,咱们就必须要封装一套易用的webview,但网上关于flutter webview的文章极其的少。但的确也有做封装的文章,但是封装手法不够优雅,封装效果不够扩展。于是我打算把我的封装与大家分享,看我如何做到高扩展,高易用性。原创 2022-03-16 20:01:07 · 2782 阅读 · 0 评论 -
跟我学企业级flutter项目:如何用dio封装一套企业级可扩展高效的网络层
前言网上有很多,比如说“Flutter Dio 亲妈级别封装教程”这篇文章,该文章上有几点问题:重试机制代码错误token存取耦合很高网络请求只能针对单一地址进行访问网络请求缓存机制也不是很完美。一旦依照这样的封装去做,那么项目后期的扩展性和易用性会有一定的阻碍,那么如何做到token存取无耦合,而且还能让app多种网络地址一同请求,还可以做到针对不同请求不同超时时长处理,网络缓存还加入可自动清理的lru算法呢?那么今天这篇文章为你揭晓企业级flutter dio网络层封装。搭建前夕准备原创 2022-02-28 16:20:23 · 4312 阅读 · 9 评论 -
庖丁解牛:Android stuido中 git 操作详解
前言在开发flutter或android项目,选择用Android stuido是比较方便的,在git的可视化使用上,Android studio已经非常方便了,但是还是有很多的小伙伴,依旧用其他工具来管理git。那么今天我就来详细的介绍一下 Android stuido的git使用与操作。一、基本认知工作区项目目录下的文件可以称之为工作区暂存区添加文件git的基本使用是add到暂缓区,commit到本地仓库,push到远程仓库。...原创 2022-02-23 17:00:38 · 2906 阅读 · 0 评论 -
基于FakerAndroid的一次il2cpp游戏逆向精修实录!!!零汇编零二进制纯编码实现
~~~格式优化整理~~~1、下载FakerAndroid工具包下载地址:https://github.com/Efaker/FakerAndroid/releases2、cmd切换到FakerAndroid.jar平级目录[工具包和要操作的Apk][工具包目录]3、执行 java -jar FakerAndroid.jar fk <apkpath>生成AndroidStudio工程[执行命令][等待命令执行完成]4、查看Apk平级目录下面生成的AndroidStudio工程[查看原安转载 2021-06-09 11:42:18 · 2945 阅读 · 7 评论 -
Android 逆向新方式:FakerAndroid
FakerAndroidA tool translate apk file to common android project and support so hook and include il2cpp c++ scaffolding when apk is a il2cpp game apk简介优雅地在一个Apk上写代码直接将Apk文件转换为可以进行二次开发的Android项目的工具,支持so hook,对于il2cpp的游戏apk直接生成il2cpp c++脚手架将痛苦的逆向环境,转化为舒转载 2021-06-09 11:36:38 · 5649 阅读 · 1 评论 -
独乐乐不如众乐乐,你的项目还在纠结用日志打印log么?Android开发okhttp3便捷拦截监听
SimpleInterceptorSimpleInterceptor 是Android OkHttp客户端的的拦截接口工具,为的是方便测试或开发,快速查找问题。环境要求Android 4.1+OkHttp 3.x or 4.xandroidxgit地址github地址 :https://github.com/smartbackme/SimpleInterceptor国内访问地址: https://gitee.com/dileber/SimpleInterceptor如果觉得不错 g原创 2021-05-20 15:39:29 · 320 阅读 · 0 评论 -
算法与数据结构之队列
算法与数据结构之队列概念基本属性队列分类(以下图都是盗的,有侵的话私聊我)根据存储结构划分链式队列循环队列单向队列双向队列根据阻塞/非阻塞划分阻塞队列非阻塞队列根据有界/无界划分有界队列无界队列基本操作enQueue(入队):deQueue(出队):概念队列(Queue)是一种先进先出(FIFO)的结构队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作基本属性队头front:删除数据的一端。队尾rear:插入数据的一端。数组原创 2021-03-31 17:43:19 · 357 阅读 · 0 评论 -
Android 简单跳转页面工具
事情起源activity 或者 fragment 每次跳转传值的时候,你是不是都很厌烦那种,参数传递。如下例子:Bundle bundle = new Bundle(); bundle.putString("MyString", "test bundle"); bundle.putParcelable("MyData", new ParcelableData()); intent.putExtras(bundle); startActivity(intent); 接原创 2021-03-15 15:06:25 · 2966 阅读 · 8 评论 -
java 设计模式:责任链模式与Android事件传递
1、概念是一个请求有多个对象来处理,这些对象是一条链,但具体由哪个对象来处理,根据条件判断来确定,如果不能处理会传递给该链中的下一个对象,直到有对象处理它为止。2、使用场景有多个对象可以处理同一个请求,具体哪个对象处理该请求待运行时刻再确定 在不明确指定接收者的情况下,向多个对象中的一个提交一个请求。 可动态制定一组对象处理请求,客户端可以动态创建职责链来处理请求。3、uml结构...原创 2019-05-23 12:14:07 · 488 阅读 · 0 评论 -
java 设计模式:观察者
1、概念在对象之间定义了一对多的依赖,使得么当一个对象状态发生改变,其相关依赖对象会收到通知并自动更新。2、场景一个抽象模型有两个方面,其中一个方面依赖于另一个方面 一个对象的改变将导致一个或多个其他对象也发生改变 需要在系统中创建一个触发链3、UML结构图分析抽象被观察者角色:也就是一个抽象主题,它把所有对观察者对象的引用保存在一个集合中,每个主题都可以有任意数量的观察...原创 2019-04-30 18:43:44 · 320 阅读 · 0 评论 -
java 设计模式:模版方法
模板方法模式 定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。 模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。通俗的说的就是有很多相同的步骤的,在某一些地方可能有一些差别适合于这种模式,如大话设计模式中说到的考试场景中,每个人的试卷都是一样的,只有答案不一样。这种场景就适合于模板方法模式。模板方法模式适用的业务场景算法或者操作遵循相似的逻辑 重构时(...原创 2019-04-30 18:05:53 · 331 阅读 · 0 评论 -
java 设计模式:策略模式
概念:策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换,策略模式让算法独立于使用它的客户而独立变化。策略模式使这些算法在客户端调用它们的时候能够互不影响地变化。使用场景:一个类定义了多种行为,并且这个行为在这个类的方法中以多个条件语句形式出现,那么可以使用策略模式避免在类中使用大量的条件语句。UML:代码展示:为了更清晰的展示出策略模式的...原创 2019-04-30 16:34:42 · 304 阅读 · 0 评论 -
java 设计模式:组合模式
1、概念将对象以树形结构组织起来,以达成“部分-整体”的层次机构,使得客户端对单个对象和组合对象的使用具有一致性。是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。这种类型的设计模式属于结构型模式,它创建了对象组的树形结构。这种模式创建了一个包含自己对象组的类。该类提供了修改相同对象组的方式。2、使用场景部分、整体场景,如树形菜...原创 2019-04-26 15:40:21 · 336 阅读 · 0 评论 -
java 设计模式:外观设计模式
1、概念外观设计模式的主要目的在于让外部减少与子系统内部多个模块的交互,从而让外部能够更简单的使用子系统。他负责把客户端的请求转发给子系统内部的各个模块进行处理。2、使用场景当你要为一个复杂子系统提供一个简单接口时 客户程序与抽象类的实现部分之间存在很大的依赖性。引入外观类可以将子系统与客户端解耦,从而提高子系统的独立性和可移植性。 当你需要构建一个层次结构的子系统时;在层次化结...原创 2019-04-26 10:53:32 · 319 阅读 · 0 评论 -
java开发:异常你了解多少
一、异常体系1、error/exception异常是 Throwable 这个父类实现的,下面有两大子类,Error与ExceptionError表示错误,exception表示异常Error类以及他的子类的实例,代表了JVM本身的错误。错误不能被程序员通过代码处理,Exception以及他的子类,代表程序运行时发送的各种不期望发生的事件。可以被Java异常处理机制使用,是异常...原创 2019-04-12 17:39:14 · 326 阅读 · 0 评论 -
java 设计模式:装饰者模式
简单详解:1、概念动态地给一个对象添加一些额外的职责。就增加功能来说, 装饰模式相比生成子类更为灵活。该模式以对客户端透明的方式扩展对象的功能。2、使用场景在不影响其他对象的情况下,以动态、透明的方式给单个对象添加职责。和继承类似添加相应的职责。 当不能采用生成子类的方法进行扩充时。一种情况是,可能有大量独立的扩展,为支持每一种组合将产生大量的子类,使得子类数目呈爆炸性增长。另一...原创 2019-04-25 15:58:31 · 300 阅读 · 0 评论 -
java 设计模式:adapter
adapter定义:将一个接口转换成客户希望的另一个接口,适配器模式使接口不兼容的那些类可以一起工作,其别名为包装器(Wrapper)。类适配器定义:是把适配的类的api转化成为目标类的api。adapter是为了让adaptee与Target发生关系建立的adapter 实现Target接口,来继承Adaptee,实现需要实现的方法代码://适配接口publi...原创 2019-04-23 17:06:16 · 372 阅读 · 0 评论 -
java 设计模式:builder
概念:建造者模式是较为复杂的创建型模式,将组件和组件的组件过程分开,然后一步一步建造一个复杂的对象。所以建造者模式又叫生成器模式。它允许用户在不知道内部构建细节的情况下,非常精细地控制对象构建流程。该模式是为了将构建过程非常复杂的对象进行拆分,让它与它的部件解耦,提升代码的可读性以及扩展性。使用场景:构造一个对象需要很多参数的时候,并且参数的个数或者类型不固定的时候UML结构图...原创 2019-04-23 16:05:55 · 326 阅读 · 0 评论 -
java开发经验谈:你真的会用单例么?
单例是什么?是一种对象创建模式,可以确保项目中一个类只产生一个实例。好处对于频繁使用的对象可以减少创建对象所花费的时间,这对于重量级对象来说,简直是福音。由于new的减少,对系统内存使用频率也会降低,减少GC的压力,并缩短GC停顿时间,这也会减少Android项目的UI卡顿。如何实现单例1、饿汉模式public class TestSingleton { pri...原创 2019-04-19 14:16:17 · 428 阅读 · 0 评论 -
探究Android中的注解
常用Annotation:Override重写函数Deprecated函数已经不推荐被使用SuppressWarnings 忽略某项 WarningDocumented 是否会保存到 Javadoc 文档中Target 可以用来修饰哪些程序元素,如 TYPE, METHOD, CONSTRUCTOR, FIELD, PARAMETER 等,未标注则表示可修饰所有Inherite...转载 2019-04-16 16:17:59 · 862 阅读 · 0 评论 -
Android 开发经验谈:多线程你了解多少?
i= i+1;如上代码很简单,在单线程中i就等于i+1,执行不会出问题。但是在多线程中就会有问题。在说多线程之前我从别人的博客里摘了一段文字:大家都知道,计算机在执行程序时,每条指令都是在CPU中执行的,而执行指令过程中,势必涉及到数据的读取和写入。由于程序运行过程中的临时数据是存放在主存(物理内存)当中的,这时就存在一个问题,由于CPU执行速度很快,而从内存读取数据和向内存写...原创 2019-04-11 17:34:05 · 308 阅读 · 0 评论 -
Android lint检查
一、什么是Android lint 检查Android lint是一个静态代码分析工具,能够对项目中潜在的bug,可优化的代码,安全性,性能,可行性,可访问性,国际化等检查。二、lint工作流程针对我们的项目,通过lint.xml配置lint分析的选项,执行检查后,会针对要分析的issue生成报告。lintTool 把源码和lint.xml配置文件 打包成lint output...原创 2019-04-02 18:31:41 · 5758 阅读 · 0 评论 -
Android开发:进程保活
概念:进程在内存中长存,怎么杀也杀不死。就算杀死了还能活起来。咱先了解一下:那咱的应用是怎么死的呢1、被用户主动kill掉2、被一些安全软件kill掉关于进程保活一、Android进程优先级1、Foreground process 前台进程当前用户操作的进程,系统内存足够的话不会回收,如果不足则回收。A. 拥有用户正在交互的 Activity(已调用onR...转载 2019-04-01 16:34:16 · 385 阅读 · 0 评论 -
Andriod开发经验谈:细节优化
一、Android中尽量不要采用静态变量存储关键数据原因:Android APP在运行后,放置在后台,一旦被回收后,再重新打开,app会恢复原有的activity,但是静态变量则会被初始化。Application也会被初始化。建议用文件存储,或者sp,或者contentProivder。二、关于Sharepreference1、sp是不能跨进程同步,不能跨进程读写数据。原...原创 2019-03-29 11:50:53 · 422 阅读 · 0 评论 -
Android 开发经验谈:优化UI,优化卡顿
关于UI卡顿:简单的来说UI卡顿就是,微量级的anr。复杂的来说:原理:60fps ->16ms每秒60帧就能让人看起来不卡顿,也就是说程序的操作必须在16ms内加载完毕。导致卡顿的原因就是,程序页面太过复杂,而在这16ms内没有渲染完毕。在Android中造成卡顿的原因:Android系统每隔16ms会发出信号,就会触发UI渲染,每次渲染成功就会让UI流畅。...原创 2019-03-28 14:29:25 · 557 阅读 · 0 评论 -
Android 经验谈:从retrofit来学动态代理
个人感觉,retrofit中的动态代理比较典型,我就拿出来解读一下:先来阅读一下retrofit 的源码,看retrofit怎么来实现动态代理ApiService apiService = retrofit.create(ApiService.class);public <T> T create(final Class<T> service) { Ut...原创 2019-03-18 16:59:31 · 520 阅读 · 0 评论 -
Android开发经验谈:并发编程(线程与线程池)
一、线程在Android开发中,你不可能都在主线程中开发,毕竟要联网,下载数据,保存数据等操作,当然这就离不开线程。(当然你可以在Android4.0以前的手机里在主线程请求网络,我最早开发的时候,用的手机比较古老。。。)在Android中你可以随意创建线程,于是就会造成线程不可控,内存泄漏,创建线程消耗资源,线程太多了消耗资源等问题。具体线程怎么创建我就不在文章里描述了,毕竟这主要将...原创 2019-03-08 10:30:12 · 384 阅读 · 0 评论 -
android开发经验谈:你到底有多了解handler
记早年的一次面试:面试官:说说你对Handler的了解?我:new 一个handler,然后在某个线程里发送message,在handler的handleMessage里接收message,message不要new 用Message.obtain()获取池子里的,来避免新建。面试官:就这么多了么?我:。。。。。。。。。。。。。。。。。以前我对handler的理解很薄,在开发...原创 2019-03-01 15:30:12 · 330 阅读 · 0 评论 -
Android开发经验谈:webview内存泄漏
看了很多WebView内存泄漏的博文,很多文章都有多多少少的问题。我便在我自己的博文中仔细针对webView内存泄漏进行分析。看这篇文章的人都应该对webview深恶痛绝怎么总是释放不掉呢???释放不掉的原因是啥呢???为啥特么的总是阴魂不散呢???答:webView内部的一些线程持有activity对象,导致activity无法释放。继而内存泄漏。解决:方案一:退...原创 2019-02-28 14:16:39 · 410 阅读 · 0 评论 -
Android序列化:Serializable与Parcelable
比较Serializable(建议在序列化到存储设备中采用):1.代码简单2.占用内存大Parcelable(建议组建或内存间传递数据):1.代码复杂(可用工具生成)2.内存开销低...原创 2019-02-13 17:59:43 · 323 阅读 · 0 评论 -
Activity启动模式:standard, singleTop, singleTask和 singleInstance
standard:标准模式场景:常用场景(不解释)singleTop:如果顶部有当前的activity则不新建,执行onNewIntent场景:建议采用在推送消息点击跳转页面。singleTask:启动则会把栈中之前有该实例的activiy全部销毁掉,执行onNewIntent场景:主页面singleInstance:自己独有一栈,执行onNewIntent场景:可多应...原创 2019-02-13 16:20:31 · 335 阅读 · 0 评论 -
Android 开发:glide圆角,圆形,效率问题
本篇文章其实并不应该出现!【捂脸哭】看过这篇文章的建议测试一下,本文中的示例,顺便对比其他百度到的示例。写这篇文章的原因如下:目前能百度到的glide圆角,圆形方案都是错误的 实际上glide在后续的新版本里提供了圆角圆形方案。刚开始我在做项目的时候,采用了百度到的方案,结果发现百度到的代码效率极差,尤其是在做recycleView的时候,展示图片慢成狗。于是我重新研究了gli...原创 2018-12-17 14:54:39 · 1552 阅读 · 2 评论 -
Android 开发:性能优化(枚举类优化)
Enum枚举替代方案public static final String OFF_LINE = "OFF_LINE"; public static final String TEST = "TEST"; public static final String EMULATION = "EMULATION"; public static final String ON_LINE...原创 2018-04-27 16:08:18 · 449 阅读 · 0 评论