Kotlin Android 扩展是否缓存合成属性或每次调用 findViewById() 时?

2024-03-21

如果我有一个简单的自定义视图:

myitem.xml

<FrameLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        >

        <TextView
        android:id="@+id/textview"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
         />
<FrameLayout/>

访问 kotlinx syntentic 属性:

import kotlinx.android.synthetic.main.myitem.view.*

view.toolbar.text = "Some text"

它在内部生成一个调用findByViewID()。所以我的问题是:

是否为自定义视图(例如活动或每次)缓存结果findByViewID叫做?出于性能原因,答案非常重要。


在当前版本(1.1.3)中,视图被缓存以用于活动和片段布局。对于其他类型的容器(例如 RecyclerView ViewHolders),没有缓存。

另外,缓存是一个HashMap键的整数装箱。 ASparseArray会更好。

编辑:从版本 1.1.4 开始,视图也可以缓存其他类,包括ViewHolder,如果你让他们实施LayoutContainer界面。您还可以使用@ContainerOptions注解指定另一个缓存实现,包括SparseArray。这两个功能仍处于实验阶段,需要在您的系统中手动启用build.gradle file:

androidExtensions {
    experimental = true
}

阅读更多 https://github.com/Kotlin/KEEP/blob/master/proposals/android-extensions-entity-caching.md关于它。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Kotlin Android 扩展是否缓存合成属性或每次调用 findViewById() 时? 的相关文章

  • 当模态打开时,如何将焦点设置在模态内的第一个 TouchableHighlight 组件(或另一个组件,例如由 ref 给出)上?

    当模式打开时 如何将焦点设置到模式内的第一个 或任何给定的 TouchableHighlight 组件 我正在使用方向键 键盘 电视遥控器 让我们使用react native文档模式示例的片段
  • 如何从android中的webview获取选定的文本?

    我需要从网络视图中获取选定的文本 为此 我这样说 webView loadUrl javascript Android getHtml window getSelection toString 在我的触摸事件中 触摸事件效果很好 Andro
  • 如何将音频 Mediastore 持续时间转换为分钟和秒?

    我正在使用音频播放器教程androidhive info https www androidhive info 2012 03 android building audio player tutorial 在 SongsManager ja
  • 带有 ListTiles 和按钮行的 Flutter 下拉菜单

    我正在尝试构建一个自定义下拉菜单 如下所示 我已经成功地实现了ListTiles and Row of Buttons没有下拉菜单 但我不确定如何将所有内容嵌套在下拉菜单类中 这是我到目前为止所得到的 class HomePage exte
  • 如何使用 queryIntentActivityOptions() 方法

    我正在尝试创建一个对话框 显示用户手机中的所有应用程序 可用于从存储中选择照片或使用相机拍摄照片 以下是我计划使用的两个意图 Intent photoPickerIntent new Intent Intent ACTION PICK ph
  • 片段开始时显示用于编辑文本的键盘

    当我的片段开始时 我希望我的编辑文本成为焦点 让用户开始输入内容 我可以使用 requestFocus 将其聚焦 但无法显示键盘 我已经尝试过这两种方法 edit EditText view findViewById R id search
  • 将可渲染节点(相同的旋转、位置和比例)替换为 Sceneform sdk 中的另一个可渲染节点

    我是 Android 版 sceneform sdk 的新手 我已经添加了一个Transformable Node 然后我应用了一些旋转 缩放并改变了它的位置 现在 单击按钮后 我需要放置具有相同旋转 缩放和位置的第二个节点 为此我所做的是
  • 如何以编程方式启用小米应用程序的自动启动

    我想知道小米是否可以提供任何应用程序的后台服务 我的应用程序中有需要始终在后台运行的服务 在除小米之外的所有设备中都工作正常 如何以编程方式完成 也适用于小米 oppo vivo 和 oneplus 手机 try Intent intent
  • 当 Android 上的脸部靠近屏幕时,以编程方式关闭屏幕

    我的应用程序是一个拨号器 当用户将手机靠近头部时 我需要关闭屏幕并防止单击控件 就像本机 Android 拨号器行为一样 我需要什么 API 级别以及如何以正确的方式做到这一点 我通过反汇编一个非常著名的 VoIP 应用程序找到了解决方案
  • Firebase API 初始化失败,java.lang.reflect.InitationTargetException

    我在我的应用程序中使用 firebase 身份验证 数据库和存储服务 之前运行良好 我已经添加了 firebase 云消息传递设置 如文档中所述 但应用程序在运行时崩溃了 我调查了这个问题大约 4 个小时并尝试了不同的解决方案 就像保持所有
  • Gradle创建多项目Jar

    因此 从 Gradle 和 Android Studio 诞生之初起 我就一直在使用它们 然而 我发现自己用头撞墙的次数有时远远超过了它的价值 我花了一天半的时间试图解决我目前的困境 在我工作的地方 我们使用很多共享库项目 这意味着与 Gr
  • 点击按钮时的 Admob 插页式广告

    我有一个应用程序 我正在使用 admob 横幅 现在我想在点击按钮时显示插页式广告 我的应用程序有 2 个活动 我想在第二个活动上显示插页式广告 第二个活动有一个返回第一个活动的按钮 我想在单击按钮后显示广告 我可以在单击按钮时显示广告 但
  • 短信管理器在少于 160 个字符时发送多部分消息

    我编写了一个使用短信管理器的应用程序 我用的方法sendTextMessage 但这行不通 现在我正在使用sendMutlipartTextMessage 这是工作 但当它大约 60 个字符时 它会发送多部分消息 这个是正常的 我读过的所有
  • 如何为移动应用程序创建无密码登录

    我有兴趣在移动应用程序和 API 之间构建某种无密码登录 假设我可以控制两者 动机是必须登录对用户来说非常烦人并且存在安全风险 例如 用户将重复使用现有密码 我希望用户能够立即开始使用该应用程序 我想知道是否有一些可行的技术 例如 在移动设
  • 如何在按下硬件主页按钮时关闭所有活动?

    我有一个应用程序 其中有 5 个活动 一个菜单活动和另外 4 个子活动附加到菜单屏幕 所以我可以选择任何活动 然后返回菜单 假设我像这样四处走动 菜单 gt 活动 1 gt 菜单 gt 活动 3 gt 活动 2 gt 菜单 现在我按 主页
  • 是否可以用 C# 为 Android 编写应用程序?

    我们都知道Android运行Dalvik VM程序 通常开发人员用 Java 编写程序并将其编译为 Dalvik 字节码 我想知道是否有可能创建一个可以接受 C 代码并将其编译为 Dalvik 字节码的编译器 嗯 这是一种选择 或者您可以在
  • 数字时钟不改变时间

    我正在开发一个数字时钟小部件 我写了代码 但它没有更新时间 我没有使用任何服务并在模拟器中运行 我的代码如下 public class ExampleAppWidgetProvider extends AppWidgetProvider D
  • Android 处理 ListView 中的多个 EditText 字段

    只是一个基本问题 如果我有几十个 EditText 字段是 ListAdapter 的一部分 那么各个 EditText 字段如何知道它们属于哪一行 目前我正在使用 TextWatcher 来监听文本输入 我尝试扩展 TextWatcher
  • 在应用程序的所有活动中重用操作栏

    我创建了一个 MenuActivity 它有一个操作栏和一个拆分操作栏 我想将此操作栏和 splitactionbar 视图用于我的应用程序中的所有活动 我是 android 的新手 所以有人可以逐步指导我 另外 我试图将搜索图标放在操作栏
  • 安装 APK 时出现会话“应用程序”错误

    我在将 Android Studio 1 1 编写的项目导入 Android Studio 2 1 2 时遇到困难 每当在平板电脑上测试应用程序之前构建 gradle 时 我都会收到此错误 下面是错误的屏幕截图 有谁知道是什么问题 我尝试过

随机推荐

  • 对方案中的列表进行排序

    如何编写一个排序算法 以升序返回列表 ex 1 3 5 2 9 回报 1 2 3 5 9 大多数Scheme 实现都附带一个对列表进行排序的过程 如果您的实现没有提供这一功能 那么为您提供一个并不困难 下面是快速排序算法的实现 gt def
  • vmap 遍历 jax 中的列表

    使用 jax 我尝试计算每个样本的梯度 处理它们 然后将它们转化为正常形式以计算正常参数更新 我的工作代码看起来像 differentiate per sample jit vmap grad loss in axes None 0 0 g
  • 在编辑模式下使用自定义 UILabels 分组 UITableView

    我有一个分组UITableView用户可以在其中进入编辑模式并从表中删除行 表格的每个单元格有两个UILabels 当表格进入编辑模式时 自定义UILabels向右推并超出单元格的右边界 如果我使用标准cell textLabel 标签调整
  • 如何根据纬度和经度获取两个位置之间的距离?

    我正在尝试根据用户到每个位置的距离显示一个列表 这些位置以 JSON 形式从 Firebase 接收 为了获取用户位置 我正在使用 navigator geolocation getCurrentPosition function posi
  • 在 angularjs $q 中向 Promise 的成功回调传递参数

    我意识到这是一个与此非常相似的问题one https stackoverflow com questions 24963151 passing parameters to promises callback in angularjs 但我仍
  • commons httpclient - 将查询字符串参数添加到 GET/POST 请求

    我正在使用 commons HttpClient 对 Spring servlet 进行 http 调用 我需要在查询字符串中添加一些参数 所以我做了以下事情 HttpRequestBase request new HttpGet url
  • 回复主题 google-api-ruby-client

    下面是我使用 google api ruby client 创建消息的代码 几乎 的样子 service Google Apis GmailV1 GmailService new message RMail Message new mess
  • 使用 Xcode 命令行从 iPhone 下载应用程序的容器

    我开发了一个 iOS 应用程序 该应用程序保存了一些出现在应用程序容器中的日志 我可以使用 Xcode gt 设备 gt 选择应用程序 gt 下载容器菜单选项下载此容器 然后我可以在目录中看到我的日志文件 AppData Documents
  • System.Net.WebException HTTP 状态代码

    有没有一种简单的方法来获取 HTTP 状态代码System Net WebException 也许是这样的 try catch WebException ex if ex Status WebExceptionStatus Protocol
  • 在 ReactJs 中为组件创建不同的移动布局

    我们如何使用 ReactJs 为组件 具有不同的桌面类型布局 创建完全不同的 移动类型布局 不是 Responsive 响应式是 css 必须处理的事情 组件应该有不同的布局 即这里为桌面屏幕创建一个带有菜单 标题菜单 的页面 该页面成为小
  • 如何使用python将带有时区的字符串转换为utc中的日期时间?

    我是新的Python 我被困在某一点上 我有一个变量 将时间存储为具有指定时区的字符串 它看起来像下面给出的 gt gt gt print usertime 2017 08 18T08 00 00 04 30 gt gt gt type u
  • 搜索 Jenkins 作业的控制台输出

    我的 Jenkins 工作有 100 多个构建 我需要搜索该作业的所有构建 以查找控制台输出中具有特定字符串的构建 有没有什么插件可以做到这一点 我怎么做 我经常使用詹金斯脚本控制台 https wiki jenkins ci org di
  • 如何在Servlet中使用“应用程序”对象?

    如果我们正在编写 JSP 文件 则只需使用嵌入的 应用程序 对象 但如何在 Servlet 中使用它呢 The applicationJSP 中的对象称为ServletContext https docs oracle com javaee
  • 如何通过printf将正数打印为负数

    在阅读有关 printf 的内容时 我发现它可以通过以下代码 对于 根据用户的需要打印正数或负数 但是该代码不起作用并且输出是正值 请指出错误所在 谢谢 include
  • 获取给定 ISO 8601 日历年的周数

    我需要创建一个函数 根据 ISO 周系统 ISO8601 在 Swift 中计算给定年份的周数 我需要这个数字作为 Int 首先我想我需要做一个NSDate然后我意识到有时 12 月 31 日是下一年的第一周 例如 2014 年 12 月
  • “read”命令在一行中最多可以包含多少个字符

    我有以下 shell 脚本来从终端读取行 bin bash while read line do if z line then break fi echo line done 我无法输入超过 256 个字符 终端不允许我这样做 终端不会打印
  • 如何通过pyodbc备份数据库

    当使用 pyodbc 游标执行时 备份语句不能在事务中使用 pyodbc 似乎在默认事务内执行查询 我也尝试过使用自动提交模式或在备份语句之前添加提交语句 这两个都不起作用 can t execute the backup statemen
  • 位置 2 出现意外文字

    我在 html 页面上显示时遇到此错误 并且我以数组形式返回日期 如果我只想显示未来的月份和年份 那么应该做什么 现在我想返回整个日期 因此 html 上有错误ngmodel 中 p calendar 标签中的页面 其中我显示 date2
  • ckeditor“key”的使用 CKEDITOR.instances.editor.on('key', function (e){

    我意识到存在有关如何为 CKEDITOR 4 实现事件处理程序的问题 我可以使用此代码来获取按键按下数据 但我似乎无法在按键后获取数据 CKEDITOR instances editor on key function e document
  • Kotlin Android 扩展是否缓存合成属性或每次调用 findViewById() 时?

    如果我有一个简单的自定义视图 myitem xml