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() 时? 的相关文章

  • 在android中通过BLE传输图像

    我使用以下代码传输 1 MB 的图像 如果在每个数据包之间实现线程延迟 则图像将成功传输 如果未设置线程延迟 则所有数据包均从BluetoothGattServer 发送 但BluetoothGattCallback 不会接收所有数据包 任
  • Android 上的 SVG 支持

    Android 支持 SVG 吗 有什么例子吗 最完整的答案是这样的 Android 2 x 默认浏览器本身不支持 SVG Android 3 默认浏览器支持 SVG 要将 SVG 支持添加到 2 x 版本的平台 您有两个基本选择 安装功能
  • 从 Android 代码设置的 SECRET_CODE

    我知道如何使用清单文件中的秘密代码 它与此源代码配合良好
  • Android 如何更改 OnTouchListener 上的按钮背景

    你好 我在 xml 中有一个按钮 我正在使用OnTouchListener在我的活动中获得button按下并释放 但问题是 当我按下按钮时背景颜色没有改变 当我延长可能的活动时OnClickListener背景正在改变 任何人都可以告诉我的
  • 带操作按钮的颤动本地通知

    我在我的 flutter 项目中尝试了 flutter 本地通知插件 它在简单通知上工作正常 但我需要带有操作按钮的通知功能 请帮助我或建议我实现此功能 不幸的是 flutter local notifications 插件尚不支持操作按钮
  • 如何在android线性布局上获得阴影? [复制]

    这个问题在这里已经有答案了 可能的重复 如何在android中为View设置阴影 https stackoverflow com questions 4406524 how to set shadow to a view in androi
  • Android在排序列表时忽略大小写

    我有一个名为路径的列表 我目前正在使用以下代码对字符串进行排序 java util Collections sort path 这工作正常 它对我的 列表进行排序 但是它以不同的方式处理第一个字母的情况 即它用大写字母对列表进行排序 然后用
  • Android Library项目使用gradle在命令行编译时无法导入另一个库项目的R类

    我的 android 项目有这样的结构 ProjectDir settings gradle MyApp depends on LibraryA and LibraryB gt build gradle gt All the other a
  • android EditText 输入类型用于 StreetNumber 字段

    我试图在地址对话框的 streetNumber 字段中选择正确的 inputType 我想先显示数字键盘 然后让用户输入字母字符 对于一些非常特殊的情况 更接近这个的是 inputType datetime 但这不允许输入字母字符 那么如何
  • 如何检查用户在EditText中输入自己的电话号码?

    用户将在我的 Android 应用程序的注册页面上的编辑文本中输入手机号码 如何检查用户输入的是他 她的手机号码而不是其他人的 我试过这个 TelephonyManager tMgr TelephonyManager mAppContext
  • 在旋转时从错误的资源文件夹中提取可绘制对象

    在这里拉我的头发 因此 我正在使用一个具有多种类型的可绘制对象的应用程序 并且它们的结构如下 res Portrait resources drawable mdpi drawable hdpi drawable xhdpi Landsca
  • 将 Firebase 云消息传递与 Windows 应用程序结合使用

    我在 Android 和 iOS 应用程序中使用 Firebase Cloud Messaging 但是我还有此应用程序的 Windows Mac OS 版本 我想保留相同的逻辑 我知道 Firebase Cloud Messaging 可
  • 在 React Native 中调试应用程序崩溃

    我是 React Native 新手 我正在尝试安装 React Native Facebook SDK 以便我可以使用我的应用程序进行 Facebook 登录 我按照此处列出的步骤操作 https tylermcginnis com in
  • Android 相机未保存在特定文件夹 [MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERA]

    当我在 Intent 中使用 MediaStore INTENT ACTION STILL IMAGE CAMERA 时遇到问题 相机正常启动 但它不会将文件保存在我的特定文件夹 photo 中 但是当我使用 MediaStore ACTI
  • 哪些 Flutter 插件或功能可以利用外部 iOS/Android 显示器来显示与主显示器不同的内容

    我正在构建一个跨平台应用程序 需要在外部显示器上显示不同的视图 通常通过连接到 LCD 投影仪的 HDMI 适配器电缆连接 Flutter 是否能够在内置的外部显示器上显示不同的屏幕 在现有的 Flutter 插件中还是使用现有的 Flut
  • 按钮 - 单击时更改背景颜色

    我的活动中有 8 个按钮 我正在寻找的是 按钮具有默认背景 单击按钮时 背景颜色应更改为其他颜色 这部分非常简单 但是 当我单击任何其他按钮时 第一个按钮的背景颜色应该变回默认颜色 我知道这将使用 选择器状态 来完成 但我不太确定如何实现它
  • Android 中循环事件的星期几和时间选择器

    我想创建一个控件 允许用户在我的 Android 活动中选择一周中的某一天 星期一 和一天中的某个时间 下午 1 00 找不到任何关于此的好帖子 好吧 我想我已经明白了 我只是不喜欢这个解决方案 因为我在一周中的某一天使用的微调器与时间选择
  • 使用单选按钮更改背景颜色 Android

    我试图通过从单选组中选择单选按钮来更改应用程序选项卡的背景 但是我不确定如何执行此操作 到目前为止我已经 收藏夹 java import android app Activity import android os Bundle publi
  • Android 中带有组的列表视图

    我有一个列表视图 每行都有一些日期和文本 我可以像 iPhone 中那样将这个 listView 分组 组之间有标题吗 在 android 中是否可能 请帮忙 即 我需要在 Listview 行之间有标题栏 以便如果我使用日期对其进行分组
  • Android 材料芯片组件崩溃应用程序。无法膨胀 xml

    Tried Chip来自两个支持库的组件 com google android support design 28 0 0 rc01和材料 com google android material material 1 0 0 rc01 堆栈

随机推荐

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

    如何编写一个排序算法 以升序返回列表 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