
JetPack
文章平均质量分 76
陈福旭
这个作者很懒,什么都没留下…
展开
-
11、JetPack之Navigation
1、背景为什么要使用Navigation呢,因为使用它切换、跳转Fragment,Activity更加的方便Navigation在androidx.navigation下2、基本使用方法2.1创建项目在activity_main中的布局采用FrameLayout,使用androidx.fragment.app.FragmentContainerView其中必须要提供id、name、navGraphandroid:name="androidx.navigation.fragm.原创 2022-05-22 17:51:39 · 734 阅读 · 1 评论 -
10、JetPack之MVVM架构
View:Framgnet/ActivityViewModel:ViweModel是为View管理数据的,也负责业务逻辑处理Model: 对应Repository,处理操作数据,domain等MVVM:尽量不要依赖View 模型驱动界面、独立于View对象和组件,不受View/组件生命周期影响 解决MVC中存在的问题 把逻辑拆分到各个ViewModel里,Activity/fragment只负责UI的绑定和UI事件监听 解决MVP中存在的问题 View层持有ViewMode原创 2022-05-17 23:36:45 · 703 阅读 · 0 评论 -
9、JetPack之ViewModel
1、介绍ViewModel是一个为view(Activity\Fragment)准备数据和管理数据的类,是业务逻辑类可以看到ViewModel不会被销毁,除非view层不存在了,才会清除掉 2、ViewModel的创建定义OnSellViewMode类继承抽象类ViewModel,这里viewModel层相当于逻辑层,处理相关业务逻辑代码,且不持有view层的引用class OnSellViewModel : ViewModel() { companion object {原创 2022-05-16 23:50:56 · 394 阅读 · 0 评论 -
8、JetPack之LiveData
1.介绍:LiveData是一种可观察的数据存储器类,LiveData具有生命周期的感知能力,可感知view层生命周期,在数据发生变化的时候(view活跃的时候,销毁时停止更新),可以通知到添加进来的观察者LiveData是个抽象类,主要使用其子类MutableLiveData2.基本使用2.1 observe方法添加观察者首先在逻辑层(后面MVVM架构中在ViewModel层)添加属性,是要监听的数据,放入MutableLiveData容器中其次,一般通过Model层获原创 2022-05-15 23:14:29 · 631 阅读 · 0 评论 -
7、JetPack之Lifecycle
1.介绍:可以让逻辑层感知到view层的生命周期变化,并进行相应的逻辑处理2.基本使用2.1.1 被动的通知View层生命周期变化让逻辑层拥有LifecycleOwner对象,因为view层实现了LifecycleOwner接口,所以可以在view层初始化的时候,直接赋值,有了LifecycleOwner对象,就可以通过getLifecycle方法获取到Lifecycle对象了2.1.2 有了LifecycleOwner对象,需要在逻辑层获取Lifecycle并添加对应的观察者(addOb.原创 2022-05-15 17:32:19 · 416 阅读 · 0 评论 -
6、改造MVP--让数据容器也能感知View生命周期变化
ILifecycleOwner接口:提供getLifecycleProvider(): LifecycleProvider,实现该接口可通过getLifecycleProvider()方法获取LifecycleProvider对象package com.example.jetpackbysob.musiclisttestfinal.lifecycle/** * Project_name:JetPackBySob * Created by:ChenFuXu. * Date: 2022/5/.原创 2022-05-04 22:55:00 · 1085 阅读 · 0 评论 -
5、改造MVP--让P层感知到V层生命周期的变化
在前面的改造过程中,为了解决多个View调用Presenter时,部分View只需要使用到Presenter的部分功能,采用了数据驱动UI的方式解决 MVP存在异步线程更新UI的问题,采用在监听数据时判断当前是否是UI线程才进行回调这里我们需要进一步解决剩余的问题:更新UI的时候需要结合当前V层的生命周期进行(在用户可见的情况下进行更新,不可见时就暂停相关的操作)因此,这里首先处理,让View层能够通知到Presenter生命周期的变化这里创建ILifecycle接口,让相应的Present原创 2022-05-03 22:51:27 · 386 阅读 · 0 评论 -
4、改造MVP--处理异步线程问题
测试音乐列表的功能,在MusicActivity中可以获取音乐列表以及播放状态的数据V层:MusicActivity,测试用来获取音乐列表,控制音乐播放状态package com.example.jetpackbysob.musiclisttest1import android.os.Bundleimport androidx.appcompat.app.AppCompatActivityimport com.example.jetpackbysob.Rimport kotlinx.an原创 2022-05-03 20:04:00 · 994 阅读 · 0 评论 -
3、改造MVP--让数据改变来通知UI更新
原则:减少/不依赖View 数据驱动UI,在数据变化时,UI自动进行更新目的:View不与Presenter直接关联 确保数据在主线程更新UI 感知View的生命周期 在可见的生命周期范围内数据更新则更新UI,否则不更新UI View不可见时,暂停某些不必要的操作 这里不需要再在Presenter中注册View,也不需要在Presenter中回调View的方法了测试代码:逻辑层接口:用来执行播放状态,以及切换歌曲的方法package com.example.jet原创 2022-05-03 17:34:11 · 555 阅读 · 0 评论 -
2、MVP架构
在MVC框架中套在Android上并不适用,会导致V层和C层代码越来越多,如果在处理复杂的逻辑时,在Activity中(V层)中代码成千上万行,会导致V层越来越臃肿,于是开始剥离V层和C层的代码。开始将大量的逻辑代码抽取到P层,于是就演化出了MVP架构View:Activity、FragmentPresenter: 逻辑层Model: 数据处理层在MVP架构中,设计到的内容是通过调用逻辑层的方法和更新UI那么如何调研逻辑层的方法,如何通知UI更新呢?首先:View层持有Prese原创 2022-05-03 15:57:41 · 956 阅读 · 0 评论 -
1、MVC->MVP->MVVM
1、MVC架构1.1 组件的互动1.2 MVC之间的经典PS:注意,是经典合作。不是必须这样做,这只是其中一种合作方式。在不同的项目开发里面,分别有不同的内容充当MVC。那在Android里是什么充当View,什么充当Model,什么充当Controller呢?View:Acitivity(View)、Fragment(View)视图,在android里xml布局转成View后,加载到了Activity/Fragment里了。Controller:Controller对应着A原创 2022-04-27 22:36:50 · 1098 阅读 · 0 评论