![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Android Jetpack
以实战为线索,带你深入了解Android Jetpack
冬瓜闯世界
嘎嘎嘎
展开
-
Jetpack与MVVM架构
Jetpack组件系列文章Android架构之LifeCycle组件Android架构之Navigation组件(一)Android架构之Navigation组件(二)Android架构之Navigation组件(三)Android架构之Navigation组件(四)Android架构之ViewModel组件Android架构之LiveData组件Android架构之Room组件(一)Android架构之Room组件(二)Android架构之WorkManager组件Android架.原创 2020-11-16 15:39:20 · 7080 阅读 · 4 评论 -
Android架构之Paging组件(二)
在上篇文章中,我们详细介绍了Paging组件的作用及使用场景,以及针对网络数据给出了3种不同的方法: PositionalDataSource、PageKeyedDataSource、ItemKeyedDataSource。我们详细地说明了PositionalDataSource、PageKeyedDataSource的使用方法。这篇文章,我们就来唠唠ItemKeyedDataSource的使用以及 网络数据+数据库在Paging中是如何使用的。ItemKeyedDataSource的基本使用ItemK原创 2020-11-15 21:20:53 · 1222 阅读 · 1 评论 -
Android架构之Paging组件(一)
Paging组件的意义分页加载是在应用程序开发过程中十分常见的需求。我们经常需要以列表的形式加载大量的数据,一次性加载所有的数据,必然会消耗大量的时间和数据流量。然而用户只需要部分数据。这时候就有了分页加载。分页加载是对数据进行按需加载。 分页加载有两种模式:传统的上拉加载更多无限滚动分页效果Paging组件就是基于无限滚动模式而设计的。比如说:京东的App就是就是基于无限滚动模式进行分页加载的。当我们滑动到一定量的数据的时候,会自动请求加载下一页的数据。这让用户会感觉到,所有的数据都是一次原创 2020-11-15 18:29:35 · 3205 阅读 · 3 评论 -
Android架构之DataBinding(二)
通过前面的学习,相信大家对DataBinding有了一个初步的认识。接下来让我们去深入的学习下DataBinding。比如说下面这行代码<TextView android:id="@+id/tvAuthor" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@{book.author}" android:padding ="@原创 2020-11-12 18:24:08 · 1559 阅读 · 0 评论 -
Android架构之DataBinding(一)
DataBinding的意义和优势我们知道,一般对控件进行操作,都是通过UI控件的id找到控件,接在再页面中通过代码对控件进行操作。 比如以下代码通过findViewById()来查找TextView控件并将其绑定到viewModel变量的userName属性.TextView textView = findViewById(R.id.sample_text);textView.setText(viewModel.getUserName());可以说,在页面中有很多这样类似的代码,使得页面的代码越原创 2020-11-11 18:14:33 · 3408 阅读 · 3 评论 -
Android架构之WorkManager组件
Workmanager的作用绝大部分应用程序都有在后台执行任务的需求。根据需求的不同,Android为后台任务提供了多种解决方法,如JobScheduler、Loader、Service等。如果这些API没有被恰当地使用,则可能会消耗大量的电量。Android在解决应用程序耗电问题上做出了各种尝试,从Doze到App Standby,通过各种方法限制和管理应用程序,以保证应用程序不会再后台过分消耗设备的电量。WorkManager为应用程序中那些不需要及时完成的任务提供了一个统一的解决方法,以便在设备电原创 2020-11-10 15:58:36 · 1627 阅读 · 2 评论 -
Android架构之Room组件(二)
Entity实体Entity实体就相当于数据库中的一张表,而Entity里面的字段就相当于表中的每一列。在Room的基本使用中,我们已经说明了如何定义Entity. @Entity public class User { @PrimaryKey public int id; public String firstName; public String lastName; }@Entity注解包含的属性有:table原创 2020-11-10 11:13:38 · 2077 阅读 · 2 评论 -
Android架构之Room组件(一)
Room基本概念Android采用Sqlite作为数据库存储。由于Sqlite代码写起来烦琐且容易出错,Android官方推出了一个ORM库(Room),Room就是为了方便Sqlite的使用而出现的,包括数据库的创建、升级、增/删/改/查等操作。Room相对来说就是对Sqlite上提供了一层封装。Room介绍Room包含三个主要组件数据库: 包含数据库的持有者,并作为应用已保留的持久关系型数据的底层连接的主要接入者 使用@Database注解的类应满足以下条件是继承RoomDatabase原创 2020-11-09 18:15:04 · 2233 阅读 · 1 评论 -
Android架构之LiveData组件
前言在上一节中,我们学习了ViewModel,我们使用的是接口来完成ViewModel与页面之间的通信,其实这并不是好的方案。 这篇博客,就让我们来了解LiveData与ViewModel是如何配合工作的。LiveData介绍LivaData是一个可被观察的数据容器类。具体来说,可以将LiveData理解为一个数据的容器,它将数据包装起来,使数据成为观察者,当该数据发生变化时,观察者能够获得通知。与常规的可观察类不同,LiveData可以感知(如Activity、Fragment或Service)的生原创 2020-11-08 13:38:09 · 7088 阅读 · 10 评论 -
Android架构之ViewModel组件
ViewModel简介视图与数据模型之间的桥梁ViewModel在页面(Activity/Fragment)功能较为简单的情况下,我们通常会将UI交互、与数据获取等相关的业务逻辑全部写在页面中。但是在页面功能复杂的情况下,代码量会变的非常多,也违反了"单一功能原则"。 页面只应该负责处理用户与UI控件的交互,并将数据展示到屏幕上,而数据获取相关的业务逻辑应该单独处理和存放。为了解决这个问题,Android为我们提供了ViewModel类,专门用于存放页面所需的数据。ViewModel可以这么理解:原创 2020-11-07 16:13:05 · 16773 阅读 · 1 评论 -
Android架构之Navigation组件(四)
配合 BottomNavigationView创建BottomViewActivitypublic class BottomViewActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.act原创 2020-11-06 21:09:44 · 1348 阅读 · 0 评论 -
Android架构之Navigation组件(三)
Navigation结合ToorBar 使用我们要完成的效果如下:初始化界面如下点击按钮跳转到OtherFragment,页面如下点击返回键,并且返回toorbarFragment。在使用Toorbar之间,需要将主题设置为NoActionBar编写toor_graph.xml文件<?xml version="1.0" encoding="utf-8"?><navigation xmlns:android="http://schemas.android.com/apk/原创 2020-11-06 18:19:31 · 1312 阅读 · 0 评论 -
Android架构之Navigation组件(二)
嵌套导航图可以将一系列目的地归入父级导航图(称为"根图")内的一个嵌套图中. 嵌套图对于整理和重复使用应用界面的各个部分非常有用.嵌套图可以封装其目的地。与根图一样,嵌套图必须具有标识为起始目的地的目的地。嵌套图之外的目的地(例如根图上 目的地)只能通过其起始目的地访问嵌套图如这幅图所示,我们可以将fragmentChoose和fragmentSpecify封装成一个Navigation,通过include引入根图中<!-- (root) nav_graph.xml --><?原创 2020-11-06 13:20:45 · 3368 阅读 · 4 评论 -
Android架构之Navigation组件(一)
Navigation介绍Navigation是Jetpack中的一个组件,支持用户导航、进入和退出应用中不同内容片段的交互,方便我们管理页面和App bar, 它具有以下优势可视化的页面导航图,便于我们理清页面间的关系。通过destination和action完成页面间的导航方便添加页面切换动画页面间类型安全的参数传递通过NavigationUI类,对菜单、底部导航、抽屉菜单导航进行统一的管理支持深层链接DeepLink看到这里是不是有个疑问? destination和action到底是原创 2020-11-05 16:35:44 · 3635 阅读 · 0 评论 -
Android架构之LifeCycle组件
LifeCycle的简介LifeCycle可以帮助开发者创建可感知生命周期的组件。这样,组件便能够在其内部管理自己的生命周期,从而降低模块间的耦合度,并降低内存泄漏发生的可能性为什么要引入LifeCycle举个例子,我们经常需要在页面的onCreate()方法中对组件进行初始化,在onPause()方法中停止组件,而在页面的onDestroy()方法中对组件进行资源回收工作。这样的工作非常烦琐,会让页面与组件之间的耦合度变高。但这些工作又不得不做,因为这可能会引发内存泄漏。假设有这样一个常见的需求:原创 2020-11-04 17:21:45 · 6510 阅读 · 2 评论