GreenDao概述 如果Android项目中要使用GreenDAO框架,需要先创建一个Java项目用于生成实体类和DAO类,然后在Android项目中使用这些类,在此过程中分别需要对Android项目添加...包中的原理很简单,总的来说有四个作用:就是用于生成实体类、DAO类、建立多表之间的关联以及配置实体类的接口和序列化功能 在Android项目中用到的最核心的四个类就是:DaoMaster、DaoSession...我们回到DaoMaster的源码中,发现在DaoMaster类的构造方法中调用了,并且传入了Student.class,所以我们在创建DaoMaster对象的时候也同时为EntityDao类和相应的数据库...大部分方法都是进行CRUD操作的,而事实上我们在进行CRUD操作都是通过StudentDao对象来进行的,实际上这两种做法没有区别,因为它内部本身就是通过dao对象来进行CRUD操作的,大家看看这些方法的返回值就知道了...实际上DaoSession和StudentDao在调用CRUD的方法进行CRUD操作时,其中的查询操作就是最特别的,为什么呢?
存储区是唯一依赖于其他多个类的类;在本例中,存储区依赖于持久性数据模型和远程后端数据源。...MVVM MVVM即Model - View - ViewModel的缩写,它的出现是为了将图形界面与业务逻辑,数据模型进行解耦。 MVVM也是Google推崇的一种Android项目架构模型。...之前学习的Jetpack组建,大部分都是为了能够更好地架构MVVM应用程序而设计的。...enqueue(object : Callback { override fun onResponse(call: Call, response: Response...} } override fun onFailure(call: Call, t: Throwable) {
}"/> 我们看下,在Activity中是如何处理的: public class ListActivity extends AppCompatActivity...通常我们可以用 @BindingAdapter 方式,在模块 内部 来做一些公用逻辑。...而 我们 上一篇 中 MVVM 是使用 LiveData,实现数据驱动的,它包裹的 User 是没有继承BaseObservable的, 要继承嘛?不用!...可见DataBinding 在 Jetpack MVVM 架构中 还是 有很大优势的。 最后补充说明得了 Jetpack MVVM 架构 的使用注意事项和原则,在实际项目使用中 应该会很有体会。...在技术学习的道路上,我们一起前进!
它是用C语言构建,在Android系统架构中的系统运行库层的c/c++程序库部分。 为什么Android端要使用这个数据库引擎。...SQLite 可在 UNIX(Linux, Mac OS-X, Android, iOS)和 Windows(Win32, WinCE, WinRT)中运行。 谈谈基本语法。...先说说SQLite的语法,分为创建,增,删,查,改。...2)在Android中的用法: public class MySQLite extends SQLiteOpenHelper { public static String DB_NAME="main.db...,new String[]{"jimu"},null,null,null); 改 1)基本语法 UPDATE USER SET name = "jimu2" WHERE id = 1; 2)Android
Android MVVM框架搭建(三)MMKV + Room + RxJava2 前言 正文 一、添加依赖 二、MMKV 1. 初始化 2. 数据存取 3. 使用 三、Room 1....使用 五、源码 前言 在上一篇文章中,我讲述了怎么在MVVM框架中搭建网络访问框架,并通过一个必应的每日壁纸做了一次请求接口的访问演示,这篇文章就需要来讲述Android端的本地数据库的使用和在MVVM...正文 本文说的是数据库,为什么要讲这个呢,因为在实际开发中,有一些数据并不需要实时更新,我们只需要在第一次打开应用的时候获取到,然后保存到手机本地数据库中即可,需要的时候从数据库中获取。...@Entity 下面我们来进行创建,在此之前我现在com.llw.mvvm包下新建一个db包。db包下新建一个AppDatabase类,空类就好。...然后在db包下新建一个bean包,bean包下新建一个Image类,我们可以分析一下需要存到数据库中的值,是否所有数据都要存入,不要做没必要的事情,那是给自己找事。
思考 这次的面试目标是「Android高工」,那么要思考的是,这个「高」,究竟高在哪里?...我们以一个什么样的工作经验,技术水平,思想深度,才能达到这个高度,这个是要思考的,在面试和准备过程中我也不断的反思和总结。 面试经历 后来复习了三个月左右。...熟悉framework哪些模块的源码,对图像性能优化有了解吗 以后的技术发展方向是如何的 阿里巴巴P6岗 HTTP2.0与3.0的区别 项目中常用的设计模式 https中哪里用了对称加密,哪里用了非对称加密...除了MVP,MVC,MVVM外还有什么其他的架构方式? 动态编译和反射相比,除了性能方面外还有什么区别? 死锁如何避免、处理? Flutter中的Widget、State、Context 的核心概念?...这里给大家提供一个方向,进行体系化的学习: 1、看视频进行系统学习 这几年的Crud经历,让我明白自己真的算是菜鸡中的战斗机,也正因为Crud,导致自己技术比较零散,也不够深入不够系统,所以重新进行学习是很有必要的
前言 随着Android应用开发技术的不断发展和成熟,很开发者越来越关注着Android应用架构的设计。目前,Android的应用架构主要有MVC、MVP和MVVM模式,我们就来说一下MVVM模式。...在MVP模式中,Model层和View层不能直接通信,Presenter层负责充当中间人,实现Model层和View层之间的间接通信。...在xml布局文件中,通过官方提供的Data Binding库,将UI与ViewModel中的数据进行绑定,当ViewModel中的数据发生变化时,UI将自动更新。xml布局文件的代码如下所示: 在Activity中,通过官方提供的Data Binding库加载布局文件,创建...博客_android mvvm如有侵权,请联系删除。
前几天接触公司一Android项目,刚看代码时,不知道这么多层级的代码都是干嘛的,看着有点儿懵。只有清楚了结构和流程,才能够在浩瀚的代码里游刃有余。...由于零零散散的业余时间看了点儿,有哪里不对的地方请指正。 何为MVVM?懂web开发的都知道有一种风格叫MVC ,模型,视图,控制器。...当然这些事 ViewModel 已经帮我们做了,它可以取出 Model 的数据同时帮忙处理 View 中由于需要展示内容而涉及的业务逻辑。...在Android中,布局里可以进行一个视图逻辑,并且Model发生变化,View也随着发生变化。 低耦合。以前Activity、Fragment中需要把数据填充到View,还要进行一些视图逻辑。...这个应该是在 Bean文件夹的MVVM文件夹中定义的Bean,以及在BaseActivity中完成的DataBanding充当了View层。 至此,MVVM 各个层已经介绍完了。
其中 Architecture 部分的组件(Android Architecture Components,以下简称 AAC)组合起来形成了一套完整的架构解决方案,在没有更好的方案被发明出来之前,我们姑且把...至此,我们可以确定,无论数据来自 Remote 还是来自本地 DB,架构蓝图中的 Repository 对 ViewModel 提供的数据可以永远是 LiveData 类型,接下来我们看一下 ViewModel...除此之外,ViewModel 也可以用做 MVVM 模式的 VM 层,利用 Data Binding 直接把 ViewModel 的 LiveData 属性绑定到 xml 元素上,xml 中声明式的写法避免了很多样板代码...进离场动画和启动选项很好理解,出栈行为是一个比较强大的功能,action 箭头所指的方向表示目标页面入栈,箭头的反方向则表示目标页面出栈,而出栈的行为在 Navigation 编辑器中完全可控,我们可以指定要出栈到哪个页面...上图表达了数据的流向,如果从 UI 层往回看,页面展示的数据存储在 PagedList 中,PagedList 只是 DataSource 的数据块(chunk),当 PagedList 需要更多数据时
通常来说,一个Android应用程序至少需要一个Activity,当我们开发小型Android程序时,可能会将大部分代码写在Activity/Fragment中,例如业务逻辑,UI控件,数据库的CRUD...因此,我们需要将代码按照功能或类型的不同进行分类,并放到不同的包或类文件中,但又不能破坏彼此间正常的通信。这在软件开发中叫做解耦,为了将代码解耦以应对日益膨胀的代码量,工程师引入了“架构”的概念。...使得在不影响应用程序各模块组件间通信的同时,还能保持模块的相对独立,这样不仅有利于后期的维护,也有利于代码的测试。 关于架构,相信大家多多少少也了解过一点,例如MVC,MVP以及MVVM。...在Android开发中,一直有用到MVC,例如将Activity/Fragment和布局文件分开就是一种最简单的MVC思想,只是它没有很好地解决我们的问题,所以才有了MVP和MVVM。...在Jetpack出来前,Android的应用架构始终处于一个混乱的阶段,Android工程师也非常的困惑,他们不清楚自己使用的架构是否真的是最佳方案,迫切希望Google官方可以推出一些关于架构的组件或指南
当涉及网络数据获取或数据库CRUD(Create、Retrieve、Update、Delete,即增加、查询、更新、删除)操作时,还需要用到工作线程,进而,我们还不得不考虑Activity/Fragment...因此,我们需要将代码按照功能或类型的不同进行分类,并放到不同的包或类文件中,但又不破坏彼此正常的功能和通信。这在软件开发中叫作“解耦”。...在Android应用程序开发中,一直以来都有用到MVC,将Activity/Fragment与布局文件分开就是一种最简单、最基本的MVC思想,只是它没有很好地解决我们的问题,所以才有了MVP和MVVM。...如下图所示,从包名的变化,我们便可以看出,AndroidSupport Library与AAC中的各种组件已经迁移到了AndroidX中。 ?...他在大学期间便开始自学Android研发技术,从事Android研发已有10年,在该领域有较为丰富的经验,曾译《Android高性能编程》一书。除了码字,他还十分喜爱阿根廷探戈。
从最早期我们会自己封装一个 MyDB 这种的数据库操作文件,到框架提供一套完整的 CRUD 类,再到现代化的框架中的 ORM ,其基础都是在变着花样的完成数据操作。...我们还能看到许多其它数据库的配置,不过,今天我们的重点还是在 mysql 这个配置中。...不过首先,我们要建立一张测试表,之后我们将对这张表进行 CRUD 操作。...在代码中,我们通过 DB 这个门面类的 insert() 方法,就可以实现原生语句的增加操作。对于路由来说,其实我们不用写完全限定命名空间的类名,直接写个 DB 也是可以的。...连接另外一个数据库 上面通过使用原生语句的方式我们可以方便地进行增、删、改、查操作了,也就是常说的 CRUD 。接下来我们来看看怎样连接其它的数据库。
文章重点: (1)了解并区分MVC,MVP,MVVM。 (2)知道这三种模式在Android中如何使用。 (3)走出data binding的误区。...水之积也不厚,则其负大舟也无力 正如庄子在逍遥游中说的,如果水不够深,那就没有能够担负大船的力量 。所以在真正开始涉及具体的代码之前,我们要先对MVC,MVP和MVVM做一个初步的了解。...层相关的逻辑抽取了出来,并且在相应的时机调用ContributorView接口对应的方法,而我们的activity是实现了这个接口的,自然会走到对应的方法中。...在接下去让我们开始探索MVVM,MVVM最近在Android上可谓十分之火,最主要的原因就是谷歌推出了data binding这个框架,可以轻松的实现MVVM。...你怎么在viewmodel层中控制?这是view层的东西啊,而且在xml中也没有,我相信会有解决的方案,但是我们有没有一种更加便捷的方式呢?
正文 我的MVVM-Demo的启动也是有白屏的,我们先观察一下啥样。 你多观察一下,会发现有一个短暂的白屏。...二、适配深色模式 在Android10.0中推出了深色模式,深色模式有以下的优点:更好的用户体验、减少耗电量为弱视以及对强光敏感的用户提高可视性。 那么我们的App怎么去适配这个模式呢?...TabLayout 这里我们只需要改一下文字颜色和下划线颜色,你可以能会问,没有改背景颜色,这取决于它的父布局,你只需要改父布局的背景颜色就行了。 7....WebView设置 在WebView中也可以设置是否为夜间模式。 10. 地图设置 之前我们在App中设置了地图,那么同样也是可以根据这个判断去设置当前地图的样式。 这样即可。...下面我们来看一下深色模式的效果图。 三、源码 GitHub:MVVM-Demo CSDN:MVVM-Demo_13.rar
如何把握模块的粒度,在保持模块独立性的同时,又不影响模块间的通信,是全世界优秀的Android工程师共同追求的目标。为了解决这一问题,各类架构模式层出不穷,比较著名的有MVC、MVP和MVVM。...它由Google官方推出,用于方便工程师搭建符合MVVM规范的Android应用程序。 本文选自《Android Jetpack应用指南》一书,让我们跟随下文一同走近Google标准应用架构。...当涉及网络数据获取或数据库CRUD(Create、Retrieve、Update、Delete,即增加、查询、更新、删除)操作时,还需要用到工作线程,进而,我们还不得不考虑Activity/Fragment...因此,我们需要将代码按照功能或类型的不同进行分类,并放到不同的包或类文件中,但又不破坏彼此正常的功能和通信。 这在软件开发中叫作“解耦”。...在Android应用程序开发中,一直以来都有用到MVC,将 Activity/Fragment 与布局文件分开就是一种最简单、最基本的MVC思想,只是它没有很好地解决我们的问题,所以才有了MVP和MVVM
同时也需要改一个AndroidManifest.xml中的NotebookActivity的主题,如下图所示: 然后我们修改一下EditActivity中的代码: public class EditActivity...) { jumpActivity(EditActivity.class); } 当然了,我们的NotebookActivity也需要一个入口,在我的MVVM中我就在侧滑菜单中增加入口...android:title="记事本" /> 添加位置如下图所示: 最后在HomeActivity中修改一下菜单点击代码,如下图所示: 下面我们运行一下:...在NotebookAdapater中增加如下图所示代码: 因为我们的NotebookDao中并没有通过id查询笔记的方法,因此我们在NotebookDao中新加一个,代码如下: @Query("...中去调用EditViewModel中的deleteNotebook方法,在标题哪里添加一个按钮,修改activity_edit.xml,代码如下: <ImageView
介绍Activity是上帝类 首先,让我们思考一下为什么在Android开发中如此迫切地需要一个清晰的软件架构。 该段摘自“代码大全第二版”: 避免创建神类。避免创建无所不知,无所不能的上帝类。...然而,在Android开发中,如果你不考虑架构的话,Activity类往往会越来越大。这是因为,在Android中,允许View和其它线程共存于Activity内。...利与弊 OK,让我们回到MVP架构上。刚刚我们了解了什么是MVP,讨论了MVP以及其它热门架构,并且介绍了MVC,MVP和MVVM三者间的不同。...TopView类,要点如下: TopActivity只是负责处理事件监听或者展示每个视图组件 所有的业务逻辑必须委托给Presenter类 在MVP中,View和Presenter是一 一对应的(在MVVM...Android Architecture(译者注:Android架构) - Thanos Karpouzis 一个在Android项目中运用MVC,MVP,MVVM的简单指导。
当我们使用 MVVM 模式时,我们究竟在每一层里做些什么?...其中 M 和 V 的中文词语和英文单词是很好理解的,但是 VM 就不是个日常用词;于是各种不知道应该放在哪里的代码便一窝蜂全放进了 VM 中,最终导致了 VM 的无限膨胀,成百上千行也是司空见惯啊!...于是那么多的代码写到哪里呢? 答案:MVVM 之外。 ---- 我们的代码不止 MVVM 三层 MVVM 不是应用程序架构,只是一个 GUI 类程序的开发模式而已。...这意味着它只是用来解决我们应用程序中 GUI 部分的开发问题,并不能用来解决其他问题。而一个能持续发展的程序怎么能只有 GUI 呢?...MVVM 只是数据驱动型 GUI 程序建议的开发模式;无论是三层中的哪一层,本质上都是在解决 UI 问题。 而非 UI 问题根本就不在 MVVM 的讨论之列。
领取专属 10元无门槛券
手把手带您无忧上云