09 2021 档案
摘要:接着上篇文末,来详细了解堆,这也是我们做性能优化时针对的地方 上次提到堆中存放着实例化的对象,我们知道c语言中没有类的概念,只有结构体,Java中的类最底层实际上也是一个结构体,实例化的类,我们又称为引用型对象,实际就是一个指针指向结构体的内存,结构体内存是连续的空间 下面的c代码计算了结构体的内存
阅读全文
摘要:安卓高级工程师想要做性能优化、NDK、设计架构时的健全性等工作时,必须是对JVM有一定的了解。技术的路越往上走,就越需要对底层的理解。计算机原理、c/c++语言、JVM原理、数据结构与算法等知识缺一不可。在学习的过程中,一开始觉得知识是线性的,就像一个数组,只需要不断往里面填充数据,然而后面越学习,
阅读全文
摘要:前面我们使用Java来运用JetPack中的一系列组件,又使用kotlin运用这些组件实现了一系列功能: kotlin--Flow文件下载kotlin--Flow结合Room运用kotlin--Flow结合retrofit运用kotlin--StateFlow运用kotlin--SharedFlow
阅读全文
摘要:前面我们使用过Paging,最新版本Paging3和以前对比,有所改动 Paging2->Paging3三个模块改为: 1.DataSource->PagingSource : 数据从该模块中获取,数据可以来源于网络、本地数据库等 2.PagedList->Pager : 负责具体获取数据的逻辑,何
阅读全文
摘要:Flow为上流发射,下流接收,是一对一的,而SharedFlow可以一对多,发射一次,多端接收 效果: 1.定义一个类,来对MutableSharedFlow对象作操作 package com.aruba.flowapplyapplication.common import kotlinx.coro
阅读全文
摘要:StateFlow当值发生变化,就会将值发送出去,下流就可以接收到新值。在某些场景下,StateFlow比LiveData更适用 效果: 1.定义ViewModel StateFlow需要初始值 package com.aruba.flowapplyapplication.viewmodel imp
阅读全文
摘要:kotlin集成retrofit获取网络数据,将数据通过Flow发射 效果: 1.定义实体类和网络相关 实体类: package com.aruba.flowapplyapplication.model data class Article(val id: Int, val text: String
阅读全文
摘要:kotlin结合Room在实际项目中的运用 架构还是MVVM,DataBinding+ViewModel+LiveData的组合 效果: 1.首先添加Room依赖 添加kapt插件: plugins { id 'com.android.application' id 'kotlin-android'
阅读全文
摘要:学习了kotlin后,我们将它运用到实际开发中,结合Flow实现文件下载 最终效果: 项目使用了Navigation框架:Activity+Fragment的方式 导入依赖: implementation 'androidx.navigation:navigation-fragment-ktx:2.
阅读全文
摘要:Paging是一个用于分页加载的组件,对于一些列表数据,以前大家都使用过的一种方式是定义一个page,当达到加载更多条件时,page加一再去请求数据,为此我们要写很多重复的代码,Paging就对分页进行了一个封装 Paging由分为三个模块 1.DataSource:数据从该模块中获取,数据可以来源
阅读全文
摘要:WorkManager是用于后台执行任务的工具,相比于Service、JobSchedule等,它拥有很低的能耗,但是它不是立即执行任务的,对于一些不需要及时完成的任务,使用WorkManager是一个很好的选择 WorkManager内部使用了数据库,所以能保证任务一定会执行。WorkManage
阅读全文
摘要:目前UI一般使用Activity嵌套使用Fragment的方式,但是Fragment的管理是比较繁琐的,需要手动通过FragmentManager和FragmentTransaction来管理Fragment的切换。以及切换动画、参数传递、AppBar的管理等。 JetPack提供了一个工具:Nav
阅读全文
摘要:JetPack提供了Room数据库,和GreenDAO等开源库一样,在SQLite做了封装 Room主要使用三个注解: 1.Entity:实体类,对应一张表 2.Dao:包含操作表的一些列方法 3.Database:数据库持有者,数据库驱动。需要满足:定义的类是一个继承RoomDatabase的抽象
阅读全文
摘要:MVP和MVVM中,ViewModel与Presenter很类似,只不过ViewModel和View层多了双向绑定,当ViewModel中数据更改,View层能够知道,反之,View层数据改变,ViewModel也能够改变。ViewModel中LiveData可以被观测,进而在Activity中观测
阅读全文
摘要:Jetpack是google官方的安卓开发工具集,目的是为了标准化和加快开发效率,并且之后会持续更新 安卓开发中,google推荐使用MVVM架构,Jetpack集成了构建MVVM架构的几种工具,相比于以前的MVVM,组合使用这些工具会更加高效、简洁、安全。可以说你的安卓项目没有升级使用这套架构,那
阅读全文
摘要:一、Channel Channel相较于Flow,Flow是冷流,本质上可以说是一个单线程操作,只有开始收集时,上流代码才会启动,而Channel是一个并发安全的队列,可以用来连接不同的协程,实现不同协程之间的通信 1.Channel的使用 创建一个Channel对象,在不同协程中调用其send和r
阅读全文
摘要:Flow是kotlin提供的一个工具,使用协程封装成生产者-消费者模式,上流来负责生产,下流来接收消耗。 一、Flow的使用 1.Flow的创建 1.可以使用flow构建函数构建一个Flow类型返回值的函数 2.flow{}构建体中可以调用挂起函数,即上流 3.上流使用emit函数发射值 4.下流使
阅读全文
摘要:从前面我们可以大致了解了协程的玩法,如果一个协程中使用子协程,那么该协程会等待子协程执行结束后才真正退出,而达到这种效果的原因就是协程上下文,上下文贯穿了协程的生命周期,这套思想和我们app的上下文很像 在开始真正了解协程上下文之前,我们先来看看下面的例子 下面的图代表了一个协程a的生命,就像一条从
阅读全文
浙公网安备 33010602011771号