文章目录一、帧的3个阶段1.1 第 1 阶段:组合1.2 第 2 阶段:布局1.3 第 3 阶段:绘制二、读取 state2.1 优化读取 state三、重组循环(循环阶段依赖项)四、架构分层五、设计原则5.1 控制5.2 自定义六、性能最佳实践6.1 使用 remember 尽可能降低计算开销6.2 使用延迟布局key6.3 使用 derivedStateOf 限制重组6.4 尽可能延后读取
1 前言大家都知道在Android开发中,一个好的Android架构能为项目带来极大的遍历,对于版本发布,后期维护等有着极为重要的地位,可以说架构是APP可持续发展的灵魂。在Android开发中也涌现出了很多优秀的架构,从早期的MVC到现在的MVP,MVVM等,Android架构一直在不停的演进。有鉴于此,google也终于在2017年的IO开发大会上推出了Android Architecture
1、概述传统的Android开发架构一般是MVC模式,Model:业务逻辑和实体模型View:对应于布局文件Controllor:对应于Activity单独从逻辑看起来非常好,与我们做Web开发时,开发模式类似,但在实际开发中,View对应于布局文件,实际上关于该布局文件中的数据绑定的操作,事件处理的代码都在Activity中,Activity既像View又像Controller(MVVP架构中包
转载 2023-09-08 09:51:57
62阅读
# Android MVVM架构用Java封装实现教程 ## 1. 整体流程 ```mermaid flowchart TD A(开始) --> B(创建Model类) B --> C(创建ViewModel类) C --> D(创建Repository类) D --> E(创建LiveData) E --> F(创建View层) F --> G
原创 2024-03-16 05:52:52
308阅读
目录Android系统架构ABC1)      Android的历史2)      Android 系统框架一览a)应用程序层b) 应用程序框架层c)系统库和Android运行时Dalvik模式的缺点ART模式(Android Runtime)的优点d) Linux内核Android 开源框架And
转载 2023-09-28 22:41:17
66阅读
上一篇博文中提到了自己写一个网络工具类,然而自己的能力明显有限,封装的工具类无论从功能还是性能上都比不上前辈大牛们已经完善好的网络框架,但是我们又想更加方便的使用大牛们的框架,怎么办呢?我们可以二次封装一下网上的网络框架,让它们使用起来更加的方便,这里以目前很流行的Volley为例:直接使用Volley的Get请求时的步骤:1.首先要创建一个全局的Volley队列,我们可以写一个MyApplica
转载 2024-04-02 09:58:24
55阅读
在一个项目中,我们会有很多路由,那么我们该如何更好的管理自己的路由,在多人协同的情况下可以更好的规范路由呢,我来说一下自己的做法1.承接gin框架初识(先跑一个简单demo) ①,先创建一个controller文件夹,再创建子文件夹及go文件,如下:  2.每个go文件的代码如下:project->index.go:package main import ( c
转载 2023-06-14 23:34:53
286阅读
使用项目的原话:Android和Java中类型安全的HTTP客户端 项目地址:https://github.com/square/retrofit这里Retrofit还需要导入它的Gson依赖库,因为返回的数据需要Gson来处理1、Get请求 2、Post请求 3、单、多文件上传演示提供的接口(该接口不支持post方式)get请求(支持普通请求)get请求(支持键值对参数)Post请求(支持键值对
转载 2023-07-10 10:05:48
81阅读
在上一篇文章《Android Retrofit + RxJava使用详解》中,我们学习了Retrofit的一些基本用法,但在实际的项目使用中,还是会出现一些问题,今天就让我们一起来探讨一下如何对Retrofit进行封装吧!如果你使用的是MVP,这篇文章可能不太适合你,请移步《Android 谈谈我所理解的MVP》。1.背景介绍首先来回顾一下Retrofit的基本使用流程,直接上代码:/** *
转载 2023-08-25 14:02:36
134阅读
Jetpack组件系列文章Android架构之LifeCycle组件Android架构之Navigation组件(一)Android架构之Navigation组件(二)Android架构之Navigation组件(三)Android架构之Navigation组件(四)Android架构之ViewModel组件Android架构之LiveData组件Android架构之Room组件(一)Androi
转载 2023-07-27 22:10:52
361阅读
前言想了解一个新事物我会按以下步骤来:1、它是什么;2、它有什么用(出现的理由),且有什么优缺点。而这里对mvp阐述分为以下步骤:一、MVP出现原因;二、MVP简单例子;三、MVP总结       1、mvp是什么;       2、mvp有什么用?    &
转载 2023-08-31 20:25:27
73阅读
Room在SQLite基础上做了ORM封装,使用起来类似JPA,不需要写太多的sql。准备,导入依赖//room def room_version="2.4.2" implementation "androidx.room:room-runtime:$room_version" annotationProcessor "androidx.room:room-compiler:$room_versi
转载 2024-04-11 08:31:11
102阅读
代码打包签名Android Studio为大家集成了代码打包混淆的功能,具体操作流程如下组图所示:1、点击Android Studio上方工具栏的  Build -> Generate Signed APK  选项,弹出如下右图所示的对话框:                 2、这里
1.前言上一篇文章介绍了ToolBar的使用方法,在日常开发中ToolBar会在很多的Activity中同时使用,所以我们有必要把ToolBar进行封装,方便调用。2.ToolBar的封装基本思路是写一个单独的ToolBar的文件,再写一个基类Activity重写它的setContentView()方法,在这个方法里添加ToolBar。具体代码如下:package bcjm.myapplicati
这几年 MVP 在 Android 开发中已经开始被广泛使用,逐渐成为一种主流的设计思想。在 MVP 出现之前,我们使用最多的可能就是 MVC 了,那么我们为什么要使用 MVP,它解决了 MVC 使用中的那些痛点呢,那我们先从 MVC 说起。一、浅谈 MVCMVC 的全称是 Model-View-Controller,这三部分在 Android 中可以按照如下的层次划分:Model(数据模型层):
转载 2023-10-03 10:02:39
86阅读
上篇文章 Android Architecture Components(AAC)1 数据库架构Room 我们介绍了room的基本使用以及它的优缺点,接下来我们继续对room这个数据库框架分析。 先从dao类入手这里我们添加了一个baseDao这个dao作为所有dao的父类分装了共通化的数据库处理。@Dao public interface BaseDao<T> { @Ins
转载 2023-08-30 21:41:07
86阅读
前言大家好,我是小益。本章是Android的MVVM架构实践系列文章的第三篇,上一篇文章主要介绍了Activity的封装,本章主要介绍Fragment的封装。如果有去Github上看过小益的封装案例的同学,会发现上章中Activity的封装以及本篇中Fragment的封装比Gtihub上的案例要简单,相当于是一个简化版本。这是因为小益只是抽取了与MVVM相关的部分放在文章中讲解,Github中的案
转载 2023-09-16 15:44:02
111阅读
关于Mvp封装比较简单的代码java利用构建器来创建实例而不是构造器对于类而言,为了让客户端获取他本身的一个实例, 最传统的方法就是提供一个公有的构造器。一个类中重载多个构造器客户面对多个构造器这种API永远也记不住该用哪个构造器, 并且每次调用构造器必然会创建新的对象, 如果程序需要重复使用对象,构造器无法避免创建不必要的对象。原文链接:```java <html> <head
转载 2023-07-25 19:27:05
90阅读
一个app中如果多次的使用Toolbar,会写很多重复的代码,这也不符合我们的编程思想.所以要对Toolbar进行封装. 代码框架 程序效果(这里进行简单的设置) 布局文件 主窗体中没有进行编写 ToolbarActivity的xml文件代码 <? xml version= "1.0" encoding= "utf-8" ?> < Relat
转载 2024-08-07 14:38:08
24阅读
1、首先,就是封装IBaseView,这里面没什么需要做的,所以就只要一个方法,就是显示错误信息        public interface IBaseView { /** * 显示错误信息 * @param msg */ void showErrorMessage(S
转载 2023-05-29 22:52:10
162阅读
  • 1
  • 2
  • 3
  • 4
  • 5