Benz 的blog

MVC 设计模式概述

MVC模式(Model-View-Controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller)。MVC模式最早为Trygve Reenskaug提出,为施乐帕罗奥多研究中心(Xerox PARC)的Smalltalk语言发明的一种软件设计模式。

MVP模式在Android开发中的应用

随着UI创建技术的功能日益增强,UI层也履行着越来越多的职责。为了更好地细分视图(View)与模型(Model)的功能,让View专注于处理数据的可视化以及与用户的交互,同时让Model只关系数据的处理,基于MVC概念的MVP(Model-View-Presenter)模式应运而生。

深入Android渲染机制

1、知识储备

CPU:中央处理器,它集成了运算,缓冲,控制等单元,包括绘图功能。CPU将对象处理为多维图形、纹理(Bitmaps、Drawables等都是一起打包到统一的纹理)。

GPU:一个类似于CPU的专门用来处理Graphics的处理器,作用用来帮助加快格栅化操作,当然,也有相应的缓存数据(例如缓存已经光栅化过的bitmap等)机制。

OpenGL ES是手持嵌入式设备的3DAPI,跨平台的、功能完善的2D和3D图形应用程序接口API,有一套固定渲染管线流程。附相关OpenGL渲染流程资料

Android图片缓存之Glide进阶

前面学习了Glide的简单使用(Android图片缓存之初识Glide),今天来学习一下Glide稍微复杂一点的使用。

GlideModule使用:

GlideModule 是一个抽象方法,全局改变 Glide 行为的一个方式,通过全局GlideModule 配置Glide,用GlideBuilder设置选项,用Glide注册ModelLoader等。

1.)自定义一个GlideModule

public class MyGlideModule implements GlideModule {
    @Override public void applyOptions(Context context, GlideBuilder builder) {
        // Apply options to the builder here.
    }
    @Override public void registerComponents(Context context, Glide glide) {

Android图片缓存之初识Glide

Glide 是 Google 员工的开源项目, Google I/O 上被推荐使用,一个高效、开源、Android设备上的媒体管理框架,它遵循BSD、MIT以及Apache 2.0协议发布。Glide具有获取、解码和展示视频剧照、图片、动画等功能,它还有灵活的API,这些API使开发者能够将Glide应用在几乎任何网络协议栈里。创建Glide的主要目的有两个,一个是实现平滑的图片列表滚动效果,另一个是支持远程图片的获取、大小调整和展示。

gitHub地址:https://github.com/bumptech/glide

Glide特点

○ 使用简单
○ 可配置度高,自适应程度高
○ 支持常见图片格式 Jpg png gif webp
○ 支持多种数据源 网络、本地、资源、Assets 等
○ 高效缓存策略 支持Memory和Disk图片缓存 默认Bitmap格式采用RGB_565内存使用至少减少一半
○ 生命周期集成 根据Activity/Fragment生命周期自动管理请求
○ 高效处理Bitmap 使用Bitmap Pool使Bitmap复用,主动调用recycle回收需要回收的Bitmap,减小系统回收压力

Android中常见的设计模式

自己理解的设计模式遵循的原则:

1)功能单一明确,设计一个类的意图要明确,不能大包大揽什么功能都继承进去

2)对于扩展要开放,修改要关闭。软件通常都有需求变化,变化过程中通过扩展的方式来实现需求变化,而不是通过修改原有的方法,因为修改原有的方法会导致原来方法的调用方会出问题,这样层层调用出问题。

3)变化的进行抽象,不变的进行具体。设计代码过程中会面对很对可变的东西,比如在实现一个功能的时候,能够运用不同的方式进行实现,这个时候可以将每个具体的实现方法进行抽象,真正不变的是这个方法要实现的目的

单例模式:

单例模式太多了,在整个应用中只有一个,标准的单例模式写法:

public class singleton{
    private volatitle static instance; //使用volatile 表明每次都会去内存中读取最新的值; static 表明生成周期和当前应用一样

    public singleton(){
    }

    public static singleton getInstance(){  //同样使用静态方法获取
         if(instance == null){

Android开发——MVC、MVP和MVVM的异同

No1:

Model一般用来保持程序的数据状态,比如数据存储、网络请求等

No2:

Android开发中应用到MVC的地方:比如ListView与Adapter,如果把ListView看作View层,那么Adapter则可以看作Controller,获取ListView展示数据的相关实现类则看作Model。

如果把思维放大,也可以把Android中的xml布局/View类看作View层,而把Activity看作是Controller层,Model层则由相关的数据操作类承担。

No3:

MVP模式可以分离显示层和逻辑层,它们之间通过接口进行通信,降低耦合。

No4:

NavigationView就是MVP设计模式的一个真实案例,Toolbar的菜单解析也遵循MVP设计模式。

No5:

MVVM:Model-View-ViewModel

View和ViewModel内部通过一个Binder进行事件交互,该Binder通过双向绑定将View与ViewModel中与对于数据操作的部分链接,当对应数据由更新时同样会自动地反馈到View层上。

Android消息机制原理

一、前言

本文主要阐述Android消息机制的原理而非使用,网上有很多的文章介绍了如何使用,如不熟悉请先搜索了解。

二、Message Handler Looper 原理(java部分):

基本原理:基于epoll和eventfd。

说明:
Message Handler 与 Looper 以及MessageQueue是java层消息机制的重要组成部分。
其中,Message是消息的实体,它可以被循环使用。
Handler是事件的发起人,它可以将消息发到MessageQueue中。
MessageQueue是消息队列,但是核心的处理部分也都在这个类中。
Looper是一个线程相关的对象,同时也是驱动部分,以保证线程可以一直处理消息。

众所周知,一个线程如果本身没有循环的话,那么它执行完run方法后也就结束了。
但是Looper.looper()里面存在for循环,这是线程不会终止的原因,也是消息机制能够生效的前提。
而looper循环中只做两件事,一是消息获取(从MessageQueue),二是消息分发(交给相应的handler处理)。

其中消息获取的方式是MessageQueue.next()方法。

Android高效内存之让你的图片省内存

在做内存优化的时候,我们发现除了解决内存泄露问题,剩下的就只有想办法减少真实的内存占用。而在App中,大部分内存可能被我们图片占用了,所以减少图片的内存占用可以带来直接的效果。

详解Android Activity生命周期

一、正常情况下Activity的生命周期:

Activity的生命周期大概可以归为三部分

整个的生命周期:onCreate()可以设置所有的“全局”状态, onDestory()可以释放所有的资源

可见的生命周期:onStart()显示给用户的UI数据和资源等, onStop()当不再需要显示时候,可以释放资源

前台的生命周期:该生命周期活跃,onResume()回到前台,onPause()不可见状态或被覆盖

不要在onCreate()方法中执行耗时的操作,onStart()及onResume()不可进行过多操作,不然打开桌面应用图标会卡顿。

详解Android Activity生命周期

同步内容
--电子创新网--
粤ICP备12070055号