首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Kotlin入门(23)适配器的进阶表达

前面在介绍列表视图和网格视图时,它们的适配器代码都存在视图持有者ViewHolder,因为Android对列表类视图提供了回收机制,如果某些列表项在屏幕上看不到了,则系统会自动回收相应的视图对象。...随着用户的下拉或者上拉手势,已经被回收的列表项要重新加载到界面上,倘若每次加载都得从头创建视图对象,势必增加了系统的资源开销。...所以ViewHolder便应运而生,它在列表项首次初始化时,就将其视图对象保存起来,后面再次加载视图时,即可直接从持有者处获得先前的视图对象,从而减少了系统开销,提高了系统的运行效率。...下面便是个循环视图的网格适配器,它实现了类似淘宝主页的网格频道栏目,具体的Kotlin代码如下所示: //把公共属性和公共方法剥离到基类RecyclerBaseAdapter, //此处需实现getItemCount...不过Kotlin早就料到了这一手,为此专门提供了一个插件名叫LayoutContainer,只要开发者让自定义的ViewHolder继承该接口,即可视图持有者内部无需获取就能使用控件对象了。

1.8K41

Android面试大纲(集合)

为了解决这一问题,Google提供了HandlerThread,HandlerThread是在线程中创建一个Looper循环器,让Looper轮询消息队列,当有耗时任务进入队列时,则不需要开启新线程,在原有的线程中执行耗时任务即可...进阶——Android视图工作机制之measure、layout、draw http://blog.csdn.net/qq_30379689/article/details/54588736 Android...内存抖动:指程序短时间内大量创建对象,然后回收的现象 3、解决OOM Bitmap相关 图片压缩 加载缩略图 在滚动时不加载图片 回收Bitmap 使用inBitmap属性 捕获异常 其他相关 listview...的实践 http://blog.csdn.net/qq_30379689/article/details/53037430 22 插件化面试题 1、插件化解决问题 动态加载APK(反射、类加载器)...直接在Plugin中下载Kotlin插件即可 系统会自动配置到Kotlin环境

1.1K20
您找到你想要的搜索结果了吗?
是的
没有找到

实战 | 认识 RecyclerView

视图滑出屏幕时,RecyclerView 会复用它并且填充新的数据。由于它是通过回收已有的结构而不是持续创建新的列表项,所以它可以有效提高应用的时间效率和空间效率。...粉红色的方格表示屏幕上正在显示的表项,黄色的方格表示屏幕可视范围之外的表项是如何被回收并转为新的视图 为什么您需要使用 RecyclerView 呢?...首先在 Android Studio 里创建一个工程,并且使用 Empty Activity 模板。设置项目名称,并且选择 Kotlin 作为项目所用的语言。...创建一个新的布局文件,将它命名为 flower_item,它用来决定每一个表项的显示布局。本例中布局需要显示一个鲜花的名称,所以这里只需要 TextView。 <!...RecyclerView 需要创建当前所显示的表项数量的 ViewHolder 外加缓存中的几个 ViewHolder 即可

1.1K30

Jetpack Compose Alpha 版现已发布!

起初,我们计划通过一系列的 Android Jetpack 开发库解决 Android 开发中最困难、最常见的问题,帮助开发者们在所有的 Android 版本上运行高质量的应用。...还有,邻国 (Duolingo) 应用使用了 Kotlin 之后,肉眼可见的代码行数平均减少了 30%。...Alpha 版本发布内容如下:  Animations Constraint Layout 无障碍初步支持 输入和手势 与视图的互操作性 (可以在您现有的 app 中混合可以组合的功能) 懒加载列表 Material...可以通过以下两种主要的方式将 Compose 与基于视图的 UI 结合起来: 您可以添加 Compose 元素到现有的 UI,或者创建一个全新的基于 Compose 的屏幕,或者是向现有的 fragment...或视图布局中添加 Compose 元素

4K30

浅谈Android Studio3.6 更新功能

拆分视图并放大设计编辑器 设计编辑器(例如,布局编辑器和导航编辑器)现在提供一个拆分视图,使您可以同时查看UI的“设计”视图和“代码”视图。 要启用拆分视图,请单击编辑器窗口右上角的“拆分”图标。...(Emulators) 对仿真器的增强包括一下几个部分: 显示器支持 改进的位置支持,提供单点和路线选项 适用于Android Automotive OS的新虚拟设备和项目模板。...APK重新加载本地库 当在IDE外部更新包含本地库代码的APK时,您不再需要创建新项目。 Android Studio会检测APK中的更改,并为您提供重新导入APK的选项。...SDK断点续传功能 现在,当使用SDK Manager下载SDK组件和工具时,Android Studio现在允许您恢复被中断(例如由于网络问题)的下载,而无需从头开始重新开始下载。...附加Kotlin的外部APK源 现在,当您分析和调试预建的APK时,可以附加Kotlin的外部APK源。

1.3K30

精选Android中高级面试题:性能优化,JNI,设计模式

推荐文章:Android 高效加载大图、解决方案,有效避免程序OOM (https://blog.csdn.net/guolin_blog/article/details/9316683) 5、内存回收机制与...然而在主流的 Java 虚拟机里未选用引用计数算法来管理内存,主要原因是它难以解决对象之间相互循环引用的问题,所以出现了另一种对象存活判定算法。...使用『标记 — 清理算法』或者『标记 — 整理算法』,只需标记较少的回收对象即可。 标记 - 清除算法:首先『标记』出所有需要回收的对象,然后统一『清除』所有被标记的对象。...推荐文章:Android 启动页解决攻略 (https://blog.csdn.net/zivensonice/article/details/51691136) 8、强引用置为 null,会不会被回收...MVP 彻底解决了 MVC 中 View 和 Controller 傻傻分不清楚的问题,但是随着业务逻辑的增加,一个页面可能会非常复杂,UI 的改变是非常,会有非常的 case,这样就会造成 View

2.6K30

精选Android中高级面试题 (四):性能优化,JNI,设计模式

推荐文章:Android 高效加载大图、解决方案,有效避免程序OOM (https://blog.csdn.net/guolin_blog/article/details/9316683) 5、内存回收机制与...然而在主流的 Java 虚拟机里未选用引用计数算法来管理内存,主要原因是它难以解决对象之间相互循环引用的问题,所以出现了另一种对象存活判定算法。...使用『标记 — 清理算法』或者『标记 — 整理算法』,只需标记较少的回收对象即可。 标记 - 清除算法:首先『标记』出所有需要回收的对象,然后统一『清除』所有被标记的对象。...推荐文章:Android 启动页解决攻略 (https://blog.csdn.net/zivensonice/article/details/51691136) 8、强引用置为 null,会不会被回收...MVP 彻底解决了 MVC 中 View 和 Controller 傻傻分不清楚的问题,但是随着业务逻辑的增加,一个页面可能会非常复杂,UI 的改变是非常,会有非常的 case,这样就会造成 View

1.1K30

2018 年初值得关注的 25 个新 Android 库和项目

它有一个良好的文档,但它是用中文写的。不过只要翻译成英文即可,祝玩得开心! 6....ChartView https://github.com/romandanylyk/ChartView ChartView 是一个主要用来解决如何使用 Canvas 和 ValueAnimator 来绘制自定义图表此类问题的项目...它给我提供了 Expansion Panels(其中包含了创建流程,且让我们可以轻量化的编辑一个元素)的一种实现。 文档很全面,而且项目本身也包含了示例应用。...该库就是用来尝试去解决这个问题的。 你可以在 Github 上找到更多信息。该项目是以 Apache-2.0 许可发行的。 19....在 Dalvik 上,它卸载了主要的 dex 文件,降低了 dex 的性能损失。 因为它在一个文件中,所以功能代码在内存中集中在起来,它在内存访问方面提供了最优的方案。

912100

ViewBinding 与 Kotlin 委托双剑合璧

认识 ViewBinding 1.1 ViewBinding 用于解决什么问题?...,你需要理解清楚(严格来说这并不是 ViewBinding 的问题,即使你采用其它视图绑定方案也要考虑这个问题)。...答:Activity 实例和 Activity 视图的生命周期是同步的,而 Fragment 实例和 Fragment 视图的生命周期并不是完全同步的,因此需要在 Fragment 视图销毁时,手动回收绑定类对象...| Fragment 核心原理 & 面试题 (AndroidX 版本)")") 总之,在视图销毁但是控制类对象实例还存活的时机,你就需要手动回收绑定类对象,否则造成内存泄露。...总结 ViewBinding 是一个轻量级的视图绑定方案,Android Gradle 插件会为每个 XML 布局文件创建一个绑定类。

1.6K20

对标腾讯T3的Android高级工程师面试大纲及时雨来了

Android进阶——Android视图工作机制之measure、layout、draw http://blog.csdn.net/qq_30379689/article/details/54588736...4、冷启动流程 5、冷启动优化 其他优化面试题 1、Android不用静态变量存储数据 2、SharePreference安全问题 3、内存对象序列化 4、避免在UI线程中做繁重的操作 架构模式面试题...http://blog.csdn.net/qq_30379689/article/details/53037430 插件化面试题 1、插件化解决问题 2、类加载器(Java中字节码添加到虚拟机中) 热更新面试题...1、热更新主要流程 2、热更新主流框架 3、热更新的原理 进程保活面试题 1、进程的优先级 2、Android进程回收策略 3、Android保活方案 Lint面试题 1、什么是Android Lint...基础、Java 基础、Android 源码相关分析、常见的一些原理性问题等等,可以很好地帮助我们深刻理解Android相关知识点的原理以及面试相关知识。

1.1K72

紧急应对金三银四跳槽季,那些想要换个场地的程序员可以在Android市场行动起来了!

简历 首先是简历,一般找一个模板,填写掌握的技能和项目经历即可。 项目clone后,个性Resuem.md即可,然后导出为pdf文件。 简历建议长度为2页,太长太短都不好。...直接开始写 多种解法比较,调优 第三遍,过一天之后,再重复做题 第四遍,过了一周,再来反复练、 第五遍,面试前一周,恢复性训练 通过以上方法重复练习,大概刷100题就足以应付面试,如果每天刷3道,大概准备一个即可...、CAS 的 区别 JVM 类加载机制、垃圾回收算法对比、Java 虚拟机结 构等 Java 的四大引用 Java 的泛型,<?...Android Framework 相关 Android 系统架构 View 的事件分发机制?滑动冲突怎么解决? View 的绘制流程? 跨进程通信 Android 系统启动流程是什么?...阅读源码,是解决问题 + 理解事物,更重要的:看到源码背后的想法;程序员说:读万行源码,行万种实践。

53710

无处安放的业务逻辑使你在Android架构上吃了多少生硬的亏,是否还在生搬硬套?

1.基本概念以及底层思想 所有的模块化都是为了满足单一设计原则 (字面意思理解即可),一个函数或者一个类再或者一个模块,职责越单一复用性就越强,同时能够间接降低耦合性 在软件工程的背景下,改动就会有出错的可能...视图层因为数据层的改动而被动做了修改。既然做了分层我们想要的肯定是视图、数据互不干扰,如何解决?...这样就解决了ViewModeler臃肿的问题,同时更方便编写测试用例。 注意点: 好的设计都是特定场景解决特定问题,过度设计不仅解决不了任何问题反而会增加开发成本。...所以我建议在Kotlin中 碰到数据处理尽量使用链式高阶函数(RxJava、Kotlin Flow亦然)。...面临的问题很明显,修改刷新或加载更多都会对对方产生影响,违反开闭原则中的闭(对修改关闭:行为没变不准修改源代码),导致存在不可预期的问题产生。

1.6K00

Android:Jetpack之视图绑定——ViewBinding

Google一直致力于Android生态环境的搭建,为了解决开发碎片化,方便广大开发者,在2018年的 Google I/O大会上推出了全新的Android Jetpack应用开发架构。...Android系统进行兼容; Android KTX→ 基于Kotlin特性为Android、Jetpack提供一些简易易用的扩展; Multidex→ 为具有多个Dex文件应用提供支持; Test→...本节开始折腾,先带来一个超简单的 → ViewBinding(视图绑定)。...普及,带来了扩展创建kotlin-android-extensions(KAE),直接拿id当控件用,原理: 类中定义一个存储控件引用的HashMap,id为key,控件实例为value,当用到控件时,...粗暴的空间换时间,方便是挺方便的,但也存在下述问题: [cecfb7d9961a472e9351be842e169faf.png] 好景不长,Kotlin 1.4.20-M2中,JetBrains废弃了

1.2K30

Android:Jetpack之视图绑定——ViewBinding

Google一直致力于Android生态环境的搭建,为了解决开发碎片化,方便广大开发者,在2018年的 Google I/O大会上推出了全新的Android Jetpack应用开发架构。...Android系统进行兼容; Android KTX→ 基于Kotlin特性为Android、Jetpack提供一些简易易用的扩展; Multidex→ 为具有多个Dex文件应用提供支持; Test→...本节开始折腾,先带来一个超简单的 → ViewBinding(视图绑定)。...普及,带来了扩展创建kotlin-android-extensions(KAE),直接拿id当控件用,原理: 类中定义一个存储控件引用的HashMap,id为key,控件实例为value,当用到控件时,...粗暴的空间换时间,方便是挺方便的,但也存在下述问题: [cecfb7d9961a472e9351be842e169faf.png] 好景不长,Kotlin 1.4.20-M2中,JetBrains废弃了

1K30

【翻译】Kotlin 1.1 新版本同样适合安卓开发者

一、前言 本文是一篇翻译文,尽量遵照了原文的意思,加上本人英语水平有限,第一次做翻译,如有不当之处请包涵!...《Kotlin for Android Developers》书的作者 Kotlin 1.1 的发布真是激动人心啊!...那么有一个很严肃的问题是: Kotlin 团队能否在带来新特性的同时保持对 Java 6 的兼容性呢?这个问题的回答是肯定的! 所有的新特性仍然适用于 Java 6 ,同时作为扩展而适用于安卓开发者。...比如,一个很有用处的例子就是懒加载代理,它能延迟赋值的执行直到这个属性第一次被使用。 懒加载对于局部变量也是很有用的,但是 Kotlin 却没有这样的特性。...另外一个,将会有一个新的潮流就是使用 @JvmOverloads 来实现自定义视图组件的构造函数,这从文字意义上来说就是可以用一句话来实现自定义视图的构造函数(不过确实是很长的一句话),通过一个构造函数和默认的参数值

1.1K60

面试官:Handler内存泄露的原因是什么?我:就这?太简单了吧,但我却被挂了...

所以我特意加了这一句,让匿名内部类持有外部类的引用,复现内存泄漏问题。 同样kotlin中对于内部类也是和Java有区别的: Kotlin中所有的内部类都是默认静态的,也就都是静态内部类。...如果需要调用外部的对象方法,就需要用inner修饰,改成和Java一样的内部类,并且会持有外部类的引用,需要考虑内存泄漏问题解决内存泄漏 说了这么,那么该怎么解决内存泄漏问题呢?...系统学习方向: 架构师筑基必备技能:深入Java泛型+注解深入浅出+并发编程+数据传输与序列化+Java虚拟机原理+反射与类加载+动态代理+高效IO Android高级UI与FrameWork源码:高级...+图片加载框架+网络访问框架设计+RXJava响应式编程框架设计+IOC架构设计+Android架构组件Jetpack NDK模块开发:NDK基础知识体系+底层图片处理+音视频开发 微信小程序:小程序介绍...阅读源码,是解决问题 + 理解事物,更重要的:看到源码背后的想法;程序员说:读万行源码,行万种实践。

5K00

Android开发3年,九月份面试12家大厂跳槽成功,我有一些面试经验想分享给你们

简历 首先是简历,一般找一个模板,填写掌握的技能和项目经历即可。...B站 一个大致有序的数组如何排序,最快时间复杂度 如果叫你实现,你会怎样实现一个主题的效果 如何自定义实现一个FlexLayout tinker的原理是什么,还用过什么热修复框架,robust的原理是什么...端和IOS端调一个接口,一个通了一个没通,你会如何解决 如果android端和IOS端调一个接口,一个比较慢,一个比较快,有什么思路 ARouter的原理是什么?...有没有什么非运行时插件化的解决方案? ARouter的原理是怎样的?注解处理器是处理java还是字节码 java和字节码有什么区别? kotlin空安全的原理是什么? 性能优化做过什么工作?...常见的一些原理性问题等等,可以很好地帮助我们深刻理解Android相关知识点的原理以及面试相关知识。

1.4K10
领券