@gkd-kit/docs 0.0.1721312569876 → 0.0.1721382969248

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (106) hide show
  1. package/.vitepress/dist/404.html +4 -4
  2. package/.vitepress/dist/api/index.html +7 -7
  3. package/.vitepress/dist/api/interfaces/RawApp.html +7 -7
  4. package/.vitepress/dist/api/interfaces/RawAppGroup.html +7 -7
  5. package/.vitepress/dist/api/interfaces/RawAppRule.html +7 -7
  6. package/.vitepress/dist/api/interfaces/RawAppRuleProps.html +7 -7
  7. package/.vitepress/dist/api/interfaces/RawCategory.html +7 -7
  8. package/.vitepress/dist/api/interfaces/RawCommonProps.html +7 -7
  9. package/.vitepress/dist/api/interfaces/RawGlobalApp.html +7 -7
  10. package/.vitepress/dist/api/interfaces/RawGlobalGroup.html +7 -7
  11. package/.vitepress/dist/api/interfaces/RawGlobalRule.html +7 -7
  12. package/.vitepress/dist/api/interfaces/RawGlobalRuleProps.html +7 -7
  13. package/.vitepress/dist/api/interfaces/RawGroupProps.html +7 -7
  14. package/.vitepress/dist/api/interfaces/RawRuleProps.html +7 -7
  15. package/.vitepress/dist/api/interfaces/RawSubscription.html +7 -7
  16. package/.vitepress/dist/api/type-aliases/IArray.html +7 -7
  17. package/.vitepress/dist/api/type-aliases/Integer.html +7 -7
  18. package/.vitepress/dist/api/type-aliases/Position.html +7 -7
  19. package/.vitepress/dist/assets/{api_index.md.3PRXJson.js → api_index.md.B_aYOoV1.js} +1 -1
  20. package/.vitepress/dist/assets/api_index.md.B_aYOoV1.lean.js +1 -0
  21. package/.vitepress/dist/assets/{api_interfaces_RawApp.md.8sLmHweB.js → api_interfaces_RawApp.md.Bp5w73RS.js} +1 -1
  22. package/.vitepress/dist/assets/{api_interfaces_RawApp.md.8sLmHweB.lean.js → api_interfaces_RawApp.md.Bp5w73RS.lean.js} +1 -1
  23. package/.vitepress/dist/assets/{api_interfaces_RawAppGroup.md.DdwJRj99.js → api_interfaces_RawAppGroup.md.jeT3_cxo.js} +1 -1
  24. package/.vitepress/dist/assets/{api_interfaces_RawAppGroup.md.DdwJRj99.lean.js → api_interfaces_RawAppGroup.md.jeT3_cxo.lean.js} +1 -1
  25. package/.vitepress/dist/assets/{api_interfaces_RawAppRule.md.DOjDKktq.js → api_interfaces_RawAppRule.md.CbLX8P8G.js} +1 -1
  26. package/.vitepress/dist/assets/{api_interfaces_RawAppRule.md.DOjDKktq.lean.js → api_interfaces_RawAppRule.md.CbLX8P8G.lean.js} +1 -1
  27. package/.vitepress/dist/assets/{api_interfaces_RawAppRuleProps.md.WEps3B2Z.js → api_interfaces_RawAppRuleProps.md.mDHegsKi.js} +1 -1
  28. package/.vitepress/dist/assets/{api_interfaces_RawAppRuleProps.md.WEps3B2Z.lean.js → api_interfaces_RawAppRuleProps.md.mDHegsKi.lean.js} +1 -1
  29. package/.vitepress/dist/assets/{api_interfaces_RawCategory.md.DQKPbY5o.js → api_interfaces_RawCategory.md.DUdjgczY.js} +1 -1
  30. package/.vitepress/dist/assets/{api_interfaces_RawCategory.md.DQKPbY5o.lean.js → api_interfaces_RawCategory.md.DUdjgczY.lean.js} +1 -1
  31. package/.vitepress/dist/assets/{api_interfaces_RawCommonProps.md.BoObWunG.js → api_interfaces_RawCommonProps.md.CtSInFSc.js} +1 -1
  32. package/.vitepress/dist/assets/{api_interfaces_RawCommonProps.md.BoObWunG.lean.js → api_interfaces_RawCommonProps.md.CtSInFSc.lean.js} +1 -1
  33. package/.vitepress/dist/assets/{api_interfaces_RawGlobalApp.md.DTFuY6sg.js → api_interfaces_RawGlobalApp.md.CBmfAnb3.js} +1 -1
  34. package/.vitepress/dist/assets/{api_interfaces_RawGlobalApp.md.DTFuY6sg.lean.js → api_interfaces_RawGlobalApp.md.CBmfAnb3.lean.js} +1 -1
  35. package/.vitepress/dist/assets/{api_interfaces_RawGlobalGroup.md.CI-pj5AD.js → api_interfaces_RawGlobalGroup.md.BZQPgreG.js} +1 -1
  36. package/.vitepress/dist/assets/{api_interfaces_RawGlobalGroup.md.CI-pj5AD.lean.js → api_interfaces_RawGlobalGroup.md.BZQPgreG.lean.js} +1 -1
  37. package/.vitepress/dist/assets/{api_interfaces_RawGlobalRule.md.ButOuD_j.js → api_interfaces_RawGlobalRule.md.r5Lzge_Q.js} +1 -1
  38. package/.vitepress/dist/assets/{api_interfaces_RawGlobalRule.md.ButOuD_j.lean.js → api_interfaces_RawGlobalRule.md.r5Lzge_Q.lean.js} +1 -1
  39. package/.vitepress/dist/assets/{api_interfaces_RawGlobalRuleProps.md.jof0OV0K.js → api_interfaces_RawGlobalRuleProps.md.DaMg9gj5.js} +1 -1
  40. package/.vitepress/dist/assets/{api_interfaces_RawGlobalRuleProps.md.jof0OV0K.lean.js → api_interfaces_RawGlobalRuleProps.md.DaMg9gj5.lean.js} +1 -1
  41. package/.vitepress/dist/assets/{api_interfaces_RawGroupProps.md.CzfLdQXT.js → api_interfaces_RawGroupProps.md.CZ0hUrWr.js} +1 -1
  42. package/.vitepress/dist/assets/{api_interfaces_RawGroupProps.md.CzfLdQXT.lean.js → api_interfaces_RawGroupProps.md.CZ0hUrWr.lean.js} +1 -1
  43. package/.vitepress/dist/assets/{api_interfaces_RawRuleProps.md.BAzarHNi.js → api_interfaces_RawRuleProps.md.DkIc0L7c.js} +1 -1
  44. package/.vitepress/dist/assets/{api_interfaces_RawRuleProps.md.BAzarHNi.lean.js → api_interfaces_RawRuleProps.md.DkIc0L7c.lean.js} +1 -1
  45. package/.vitepress/dist/assets/{api_interfaces_RawSubscription.md.Dc51XN4e.js → api_interfaces_RawSubscription.md.CKljwK0U.js} +1 -1
  46. package/.vitepress/dist/assets/{api_interfaces_RawSubscription.md.Dc51XN4e.lean.js → api_interfaces_RawSubscription.md.CKljwK0U.lean.js} +1 -1
  47. package/.vitepress/dist/assets/{api_type-aliases_IArray.md.oRXi7ugr.js → api_type-aliases_IArray.md.DBIZ7Hb2.js} +1 -1
  48. package/.vitepress/dist/assets/{api_type-aliases_IArray.md.oRXi7ugr.lean.js → api_type-aliases_IArray.md.DBIZ7Hb2.lean.js} +1 -1
  49. package/.vitepress/dist/assets/{api_type-aliases_Integer.md.D6h74cIH.js → api_type-aliases_Integer.md.B1mLD5vo.js} +1 -1
  50. package/.vitepress/dist/assets/{api_type-aliases_Integer.md.D6h74cIH.lean.js → api_type-aliases_Integer.md.B1mLD5vo.lean.js} +1 -1
  51. package/.vitepress/dist/assets/{api_type-aliases_Position.md.CdkdhAt0.js → api_type-aliases_Position.md.CgxnJPJO.js} +1 -1
  52. package/.vitepress/dist/assets/{api_type-aliases_Position.md.CdkdhAt0.lean.js → api_type-aliases_Position.md.CgxnJPJO.lean.js} +1 -1
  53. package/.vitepress/dist/assets/app.CJsRL6DI.js +1 -0
  54. package/.vitepress/dist/assets/chunks/@localSearchIndexroot.DNYdB9Q4.js +1 -0
  55. package/.vitepress/dist/assets/chunks/{VPLocalSearchBox.eYtt4ge9.js → VPLocalSearchBox.BWhTmwu8.js} +2 -2
  56. package/.vitepress/dist/assets/chunks/{framework.CSd4LtKr.js → framework.DAuRlsJR.js} +1 -1
  57. package/.vitepress/dist/assets/chunks/{index.R0h7RKsp.js → index.B6slXCSj.js} +1 -1
  58. package/.vitepress/dist/assets/chunks/theme.Ct42Rw2h.js +1 -0
  59. package/.vitepress/dist/assets/{guide_faq.md.B9Ah14lM.js → guide_faq.md.CQh24LD7.js} +1 -1
  60. package/.vitepress/dist/assets/{guide_faq.md.B9Ah14lM.lean.js → guide_faq.md.CQh24LD7.lean.js} +1 -1
  61. package/.vitepress/dist/assets/guide_index.md.C19r84dZ.js +1 -0
  62. package/.vitepress/dist/assets/guide_index.md.C19r84dZ.lean.js +1 -0
  63. package/.vitepress/dist/assets/{guide_snapshot.md.BcNduC28.js → guide_snapshot.md.DdWrSBgV.js} +1 -1
  64. package/.vitepress/dist/assets/{guide_snapshot.md.BcNduC28.lean.js → guide_snapshot.md.DdWrSBgV.lean.js} +1 -1
  65. package/.vitepress/dist/assets/{guide_subscription.md.BDMLB3yr.js → guide_subscription.md.BMiwrNPy.js} +1 -1
  66. package/.vitepress/dist/assets/{guide_subscription.md.BDMLB3yr.lean.js → guide_subscription.md.BMiwrNPy.lean.js} +1 -1
  67. package/.vitepress/dist/assets/{guide_what-is-gkd.md.8PjQDyPD.js → guide_what-is-gkd.md.C31ijX-g.js} +1 -1
  68. package/.vitepress/dist/assets/guide_what-is-gkd.md.C31ijX-g.lean.js +1 -0
  69. package/.vitepress/dist/assets/{index.md.BIe7A5q2.js → index.md.DTAaOzk1.js} +1 -1
  70. package/.vitepress/dist/assets/{index.md.BIe7A5q2.lean.js → index.md.DTAaOzk1.lean.js} +1 -1
  71. package/.vitepress/dist/assets/{selector_example.md.CuUVYz1m.js → selector_example.md.-3DFvS7c.js} +1 -1
  72. package/.vitepress/dist/assets/selector_example.md.-3DFvS7c.lean.js +1 -0
  73. package/.vitepress/dist/assets/selector_index.md.vTFQ7m-J.js +12 -0
  74. package/.vitepress/dist/assets/selector_index.md.vTFQ7m-J.lean.js +1 -0
  75. package/.vitepress/dist/assets/{selector_node.md.D9P0EESL.js → selector_node.md.C9SxSLjc.js} +1 -1
  76. package/.vitepress/dist/assets/selector_node.md.C9SxSLjc.lean.js +1 -0
  77. package/.vitepress/dist/assets/{selector_optimize.md.DHOZlZAJ.js → selector_optimize.md.qZxu6dCr.js} +1 -1
  78. package/.vitepress/dist/assets/selector_optimize.md.qZxu6dCr.lean.js +1 -0
  79. package/.vitepress/dist/assets/{snapshot_index.md.BgTjn8Ut.js → snapshot_index.md.kVTiIPnR.js} +1 -1
  80. package/.vitepress/dist/assets/{snapshot_index.md.BgTjn8Ut.lean.js → snapshot_index.md.kVTiIPnR.lean.js} +1 -1
  81. package/.vitepress/dist/assets/style.DU-YwcM_.css +1 -1
  82. package/.vitepress/dist/guide/faq.html +8 -8
  83. package/.vitepress/dist/guide/index.html +8 -8
  84. package/.vitepress/dist/guide/snapshot.html +8 -8
  85. package/.vitepress/dist/guide/subscription.html +8 -8
  86. package/.vitepress/dist/guide/what-is-gkd.html +8 -8
  87. package/.vitepress/dist/hashmap.json +1 -1
  88. package/.vitepress/dist/index.html +7 -7
  89. package/.vitepress/dist/selector/example.html +8 -8
  90. package/.vitepress/dist/selector/index.html +9 -9
  91. package/.vitepress/dist/selector/node.html +8 -8
  92. package/.vitepress/dist/selector/optimize.html +8 -8
  93. package/.vitepress/dist/snapshot/index.html +8 -8
  94. package/package.json +1 -1
  95. package/.vitepress/dist/assets/api_index.md.3PRXJson.lean.js +0 -1
  96. package/.vitepress/dist/assets/app.DqzQBrqq.js +0 -1
  97. package/.vitepress/dist/assets/chunks/@localSearchIndexroot.CQRgRmWG.js +0 -1
  98. package/.vitepress/dist/assets/chunks/theme.u-UTZ1M2.js +0 -1
  99. package/.vitepress/dist/assets/guide_index.md.C6EnGW7N.js +0 -1
  100. package/.vitepress/dist/assets/guide_index.md.C6EnGW7N.lean.js +0 -1
  101. package/.vitepress/dist/assets/guide_what-is-gkd.md.8PjQDyPD.lean.js +0 -1
  102. package/.vitepress/dist/assets/selector_example.md.CuUVYz1m.lean.js +0 -1
  103. package/.vitepress/dist/assets/selector_index.md.Dq6qdIFi.js +0 -12
  104. package/.vitepress/dist/assets/selector_index.md.Dq6qdIFi.lean.js +0 -1
  105. package/.vitepress/dist/assets/selector_node.md.D9P0EESL.lean.js +0 -1
  106. package/.vitepress/dist/assets/selector_optimize.md.DHOZlZAJ.lean.js +0 -1
@@ -1 +1 @@
1
- import{g as t,c as d,o as e,a5 as o}from"./chunks/framework.CSd4LtKr.js";const u=JSON.parse('{"title":"属性方法","description":"","frontmatter":{},"headers":[],"relativePath":"selector/node.md","filePath":"selector/node.md","lastUpdated":1721312533000}'),r={name:"selector/node.md"},c=o('<h1 id="title" tabindex="-1">属性方法 <a class="header-anchor" href="#title" aria-label="Permalink to &quot;属性方法 {#title}&quot;">​</a></h1><p>此章节介绍各个类型可用的属性及其方法</p><h2 id="null" tabindex="-1">null <a class="header-anchor" href="#null" aria-label="Permalink to &quot;null&quot;">​</a></h2><div class="note custom-block github-alert"><p class="custom-block-title">提示</p><p><code>null</code> 无任何属性方法, 并且属性方法当调用者或者参数是 <code>null</code> 时, 均返回 <code>null</code></p></div><p>当 <code>name</code> 是 <code>null</code> 时, <code>name.length</code> 为 <code>null</code></p><p>当 <code>parent</code> 是 <code>null</code> 时, <code>parent.getChild(0)</code> 为 <code>null</code></p><p>当 <code>index</code> 是 <code>null</code> 时, <code>parent.getChild(index)</code> 为 <code>null</code></p><h2 id="boolean" tabindex="-1">boolean <a class="header-anchor" href="#boolean" aria-label="Permalink to &quot;boolean&quot;">​</a></h2><table tabindex="0"><thead><tr><th>方法名</th><th>参数</th><th>返回类型</th><th>描述</th></tr></thead><tbody><tr><td>toInt</td><td></td><td><code>int</code></td><td>转为 0 或 1</td></tr></tbody></table><h2 id="int" tabindex="-1">int <a class="header-anchor" href="#int" aria-label="Permalink to &quot;int&quot;">​</a></h2><table tabindex="0"><thead><tr><th>方法名</th><th>参数</th><th>返回类型</th><th>描述</th></tr></thead><tbody><tr><td>toString</td><td></td><td><a href="#string"><code>string</code></a></td><td>转为10进制字符串</td></tr><tr><td>toString</td><td><code>int</code></td><td><code>string</code></td><td>转为对应进制的字符串</td></tr><tr><td>plus</td><td><code>int</code></td><td><code>string</code></td><td>加上</td></tr><tr><td>minus</td><td><code>int</code></td><td><code>string</code></td><td>减去</td></tr><tr><td>times</td><td><code>int</code></td><td><code>string</code></td><td>乘以</td></tr><tr><td>div</td><td><code>int</code></td><td><code>string</code></td><td>除以</td></tr><tr><td>rem</td><td><code>int</code></td><td><code>string</code></td><td>取余</td></tr></tbody></table><h2 id="string" tabindex="-1">string <a class="header-anchor" href="#string" aria-label="Permalink to &quot;string&quot;">​</a></h2><table tabindex="0"><thead><tr><th>标识符</th><th>属性类型</th><th>描述</th></tr></thead><tbody><tr><td>length</td><td><a href="#int"><code>int</code></a></td><td>字符串长度</td></tr></tbody></table><table tabindex="0"><thead><tr><th>方法名</th><th>参数</th><th>返回类型</th><th>描述</th></tr></thead><tbody><tr><td>get</td><td><a href="#int"><code>int</code></a></td><td><code>string</code></td><td>获取对应索引字符串</td></tr><tr><td>at</td><td><code>int</code></td><td><code>string</code></td><td>同上,但是参数传负数时从最后一个字符取</td></tr><tr><td>substring</td><td><code>int</code></td><td><code>string</code></td><td>截取指定索引到结尾字符串</td></tr><tr><td>substring</td><td><code>int</code>,<code>int</code></td><td><code>string</code></td><td>截取指定间隔字符串</td></tr><tr><td>toInt</td><td></td><td><code>int</code></td><td>转为10进制数字</td></tr><tr><td>toInt</td><td><code>int</code></td><td><code>int</code></td><td>转为指定进制的数字</td></tr><tr><td>indexOf</td><td><code>string</code></td><td><code>int</code></td><td>查找指定字符串的索引</td></tr><tr><td>indexOf</td><td><code>string</code>,<code>int</code></td><td><code>int</code></td><td>从指定索引开始查找指定字符串的索引</td></tr></tbody></table><h2 id="node" tabindex="-1">node <a class="header-anchor" href="#node" aria-label="Permalink to &quot;node&quot;">​</a></h2><div class="important custom-block github-alert"><p class="custom-block-title">重要提示</p><p>此类型下以 _ 开头的属性只能在网页快照调试工具上使用, 真机不可用</p></div><table tabindex="0"><thead><tr><th>标识符</th><th>属性类型</th><th>描述</th></tr></thead><tbody><tr><td>_id</td><td><a href="#int"><code>int</code></a></td><td></td></tr><tr><td>_pid</td><td><code>int</code></td><td></td></tr><tr><td>id</td><td><a href="#string"><code>string</code></a></td><td></td></tr><tr><td>vid</td><td><code>string</code></td><td></td></tr><tr><td>name</td><td><code>string</code></td><td></td></tr><tr><td>text</td><td><code>string</code></td><td></td></tr><tr><td>desc</td><td><code>string</code></td><td></td></tr><tr><td>clickable</td><td><code>boolean</code></td><td></td></tr><tr><td>focusable</td><td><code>boolean</code></td><td></td></tr><tr><td>checkable</td><td><code>boolean</code></td><td></td></tr><tr><td>checked</td><td><code>boolean</code></td><td></td></tr><tr><td>editable</td><td><code>boolean</code></td><td></td></tr><tr><td>longClickable</td><td><code>boolean</code></td><td></td></tr><tr><td>visibleToUser</td><td><code>boolean</code></td><td></td></tr><tr><td>left</td><td><code>int</code></td><td></td></tr><tr><td>top</td><td><code>int</code></td><td></td></tr><tr><td>right</td><td><code>int</code></td><td></td></tr><tr><td>bottom</td><td><code>int</code></td><td></td></tr><tr><td>width</td><td><code>int</code></td><td></td></tr><tr><td>height</td><td><code>int</code></td><td></td></tr><tr><td>childCount</td><td><code>int</code></td><td></td></tr><tr><td>index</td><td><code>int</code></td><td></td></tr><tr><td>depth</td><td><code>int</code></td><td></td></tr><tr><td>parent</td><td><a href="#node"><code>node</code></a></td><td>获取父节点</td></tr></tbody></table><table tabindex="0"><thead><tr><th>方法名</th><th>参数</th><th>返回类型</th><th>描述</th></tr></thead><tbody><tr><td>getChild</td><td>int</td><td><a href="#node"><code>node</code></a></td><td>获取指定索引的子节点</td></tr></tbody></table><h2 id="context" tabindex="-1">context <a class="header-anchor" href="#context" aria-label="Permalink to &quot;context&quot;">​</a></h2><p>context 具有 <a href="#node">node</a> 的所有属性方法, 下面只介绍额外属性方法</p><table tabindex="0"><thead><tr><th>标识符</th><th>属性类型</th><th>描述</th></tr></thead><tbody><tr><td>prev</td><td><a href="#context"><code>context</code></a></td><td>右侧属性选择器的节点上下文 <br> 最右侧的 prev=null</td></tr></tbody></table><p>例 <code>FrameLayout[prev.name$=&#39;ImageView&#39;] &gt; ImageView</code> 中的 prev 就是 FrameLayout 右侧的 ImageView</p><table tabindex="0"><thead><tr><th>方法名</th><th>参数</th><th>返回类型</th><th>描述</th></tr></thead><tbody><tr><td>getPrev</td><td>int</td><td><a href="#context"><code>context</code></a></td><td>快捷获取深层 prev <br> getPrev(0) -&gt; prev <br> getPrev(1) -&gt; prev.prev <br> getPrev(2) -&gt; prev.prev.prev</td></tr></tbody></table>',23),a=[c];function n(i,h,l,s,b,g){return e(),d("div",null,a)}const m=t(r,[["render",n]]);export{u as __pageData,m as default};
1
+ import{_ as t,c as d,o as e,a8 as o}from"./chunks/framework.DAuRlsJR.js";const u=JSON.parse('{"title":"属性方法","description":"","frontmatter":{},"headers":[],"relativePath":"selector/node.md","filePath":"selector/node.md","lastUpdated":1721382947000}'),r={name:"selector/node.md"},c=o('<h1 id="title" tabindex="-1">属性方法 <a class="header-anchor" href="#title" aria-label="Permalink to &quot;属性方法 {#title}&quot;">​</a></h1><p>此章节介绍各个类型可用的属性及其方法</p><h2 id="null" tabindex="-1">null <a class="header-anchor" href="#null" aria-label="Permalink to &quot;null&quot;">​</a></h2><div class="note custom-block github-alert"><p class="custom-block-title">提示</p><p><code>null</code> 无任何属性方法, 并且属性方法当调用者或者参数是 <code>null</code> 时, 均返回 <code>null</code></p></div><p>当 <code>name</code> 是 <code>null</code> 时, <code>name.length</code> 为 <code>null</code></p><p>当 <code>parent</code> 是 <code>null</code> 时, <code>parent.getChild(0)</code> 为 <code>null</code></p><p>当 <code>index</code> 是 <code>null</code> 时, <code>parent.getChild(index)</code> 为 <code>null</code></p><h2 id="boolean" tabindex="-1">boolean <a class="header-anchor" href="#boolean" aria-label="Permalink to &quot;boolean&quot;">​</a></h2><table tabindex="0"><thead><tr><th>方法名</th><th>参数</th><th>返回类型</th><th>描述</th></tr></thead><tbody><tr><td>toInt</td><td></td><td><code>int</code></td><td>转为 0 或 1</td></tr></tbody></table><h2 id="int" tabindex="-1">int <a class="header-anchor" href="#int" aria-label="Permalink to &quot;int&quot;">​</a></h2><table tabindex="0"><thead><tr><th>方法名</th><th>参数</th><th>返回类型</th><th>描述</th></tr></thead><tbody><tr><td>toString</td><td></td><td><a href="#string"><code>string</code></a></td><td>转为10进制字符串</td></tr><tr><td>toString</td><td><code>int</code></td><td><code>string</code></td><td>转为对应进制的字符串</td></tr><tr><td>plus</td><td><code>int</code></td><td><code>string</code></td><td>加上</td></tr><tr><td>minus</td><td><code>int</code></td><td><code>string</code></td><td>减去</td></tr><tr><td>times</td><td><code>int</code></td><td><code>string</code></td><td>乘以</td></tr><tr><td>div</td><td><code>int</code></td><td><code>string</code></td><td>除以</td></tr><tr><td>rem</td><td><code>int</code></td><td><code>string</code></td><td>取余</td></tr></tbody></table><h2 id="string" tabindex="-1">string <a class="header-anchor" href="#string" aria-label="Permalink to &quot;string&quot;">​</a></h2><table tabindex="0"><thead><tr><th>标识符</th><th>属性类型</th><th>描述</th></tr></thead><tbody><tr><td>length</td><td><a href="#int"><code>int</code></a></td><td>字符串长度</td></tr></tbody></table><table tabindex="0"><thead><tr><th>方法名</th><th>参数</th><th>返回类型</th><th>描述</th></tr></thead><tbody><tr><td>get</td><td><a href="#int"><code>int</code></a></td><td><code>string</code></td><td>获取对应索引字符串</td></tr><tr><td>at</td><td><code>int</code></td><td><code>string</code></td><td>同上,但是参数传负数时从最后一个字符取</td></tr><tr><td>substring</td><td><code>int</code></td><td><code>string</code></td><td>截取指定索引到结尾字符串</td></tr><tr><td>substring</td><td><code>int</code>,<code>int</code></td><td><code>string</code></td><td>截取指定间隔字符串</td></tr><tr><td>toInt</td><td></td><td><code>int</code></td><td>转为10进制数字</td></tr><tr><td>toInt</td><td><code>int</code></td><td><code>int</code></td><td>转为指定进制的数字</td></tr><tr><td>indexOf</td><td><code>string</code></td><td><code>int</code></td><td>查找指定字符串的索引</td></tr><tr><td>indexOf</td><td><code>string</code>,<code>int</code></td><td><code>int</code></td><td>从指定索引开始查找指定字符串的索引</td></tr></tbody></table><h2 id="node" tabindex="-1">node <a class="header-anchor" href="#node" aria-label="Permalink to &quot;node&quot;">​</a></h2><div class="important custom-block github-alert"><p class="custom-block-title">重要提示</p><p>此类型下以 _ 开头的属性只能在网页快照调试工具上使用, 真机不可用</p></div><table tabindex="0"><thead><tr><th>标识符</th><th>属性类型</th><th>描述</th></tr></thead><tbody><tr><td>_id</td><td><a href="#int"><code>int</code></a></td><td></td></tr><tr><td>_pid</td><td><code>int</code></td><td></td></tr><tr><td>id</td><td><a href="#string"><code>string</code></a></td><td></td></tr><tr><td>vid</td><td><code>string</code></td><td></td></tr><tr><td>name</td><td><code>string</code></td><td></td></tr><tr><td>text</td><td><code>string</code></td><td></td></tr><tr><td>desc</td><td><code>string</code></td><td></td></tr><tr><td>clickable</td><td><code>boolean</code></td><td></td></tr><tr><td>focusable</td><td><code>boolean</code></td><td></td></tr><tr><td>checkable</td><td><code>boolean</code></td><td></td></tr><tr><td>checked</td><td><code>boolean</code></td><td></td></tr><tr><td>editable</td><td><code>boolean</code></td><td></td></tr><tr><td>longClickable</td><td><code>boolean</code></td><td></td></tr><tr><td>visibleToUser</td><td><code>boolean</code></td><td></td></tr><tr><td>left</td><td><code>int</code></td><td></td></tr><tr><td>top</td><td><code>int</code></td><td></td></tr><tr><td>right</td><td><code>int</code></td><td></td></tr><tr><td>bottom</td><td><code>int</code></td><td></td></tr><tr><td>width</td><td><code>int</code></td><td></td></tr><tr><td>height</td><td><code>int</code></td><td></td></tr><tr><td>childCount</td><td><code>int</code></td><td></td></tr><tr><td>index</td><td><code>int</code></td><td></td></tr><tr><td>depth</td><td><code>int</code></td><td></td></tr><tr><td>parent</td><td><a href="#node"><code>node</code></a></td><td>获取父节点</td></tr></tbody></table><table tabindex="0"><thead><tr><th>方法名</th><th>参数</th><th>返回类型</th><th>描述</th></tr></thead><tbody><tr><td>getChild</td><td>int</td><td><a href="#node"><code>node</code></a></td><td>获取指定索引的子节点</td></tr></tbody></table><h2 id="context" tabindex="-1">context <a class="header-anchor" href="#context" aria-label="Permalink to &quot;context&quot;">​</a></h2><p>context 具有 <a href="#node">node</a> 的所有属性方法, 下面只介绍额外属性方法</p><table tabindex="0"><thead><tr><th>标识符</th><th>属性类型</th><th>描述</th></tr></thead><tbody><tr><td>prev</td><td><a href="#context"><code>context</code></a></td><td>右侧属性选择器的节点上下文 <br> 最右侧的 prev=null</td></tr></tbody></table><p>例 <code>FrameLayout[prev.name$=&#39;ImageView&#39;] &gt; ImageView</code> 中的 prev 就是 FrameLayout 右侧的 ImageView</p><table tabindex="0"><thead><tr><th>方法名</th><th>参数</th><th>返回类型</th><th>描述</th></tr></thead><tbody><tr><td>getPrev</td><td>int</td><td><a href="#context"><code>context</code></a></td><td>快捷获取深层 prev <br> getPrev(0) -&gt; prev <br> getPrev(1) -&gt; prev.prev <br> getPrev(2) -&gt; prev.prev.prev</td></tr></tbody></table>',23),a=[c];function n(i,h,l,s,b,p){return e(),d("div",null,a)}const m=t(r,[["render",n]]);export{u as __pageData,m as default};
@@ -0,0 +1 @@
1
+ import{_ as t,c as d,o as e,a8 as o}from"./chunks/framework.DAuRlsJR.js";const u=JSON.parse('{"title":"属性方法","description":"","frontmatter":{},"headers":[],"relativePath":"selector/node.md","filePath":"selector/node.md","lastUpdated":1721382947000}'),r={name:"selector/node.md"},c=o("",23),a=[c];function n(i,h,l,s,b,p){return e(),d("div",null,a)}const m=t(r,[["render",n]]);export{u as __pageData,m as default};
@@ -1 +1 @@
1
- import{g as e,c as o,o as t,a5 as c}from"./chunks/framework.CSd4LtKr.js";const b=JSON.parse('{"title":"查询优化","description":"","frontmatter":{},"headers":[],"relativePath":"selector/optimize.md","filePath":"selector/optimize.md","lastUpdated":1721312533000}'),d={name:"selector/optimize.md"},i=c('<h1 id="title" tabindex="-1">查询优化 <a class="header-anchor" href="#title" aria-label="Permalink to &quot;查询优化 {#title}&quot;">​</a></h1><p>一些关于查询优化的说明</p><h2 id="query-root" tabindex="-1">查找根节点 <a class="header-anchor" href="#query-root" aria-label="Permalink to &quot;查找根节点 {#query-root}&quot;">​</a></h2><p>选择器通过满足下列格式的属性选择器标识根节点</p><ul><li><code>[parent=null]</code></li><li><code>A[id=&#39;xxx&#39;][parent=null][text=&#39;xxx&#39;]</code></li></ul><p>即只需存在一个 <code>[parent=null]</code> 就满足条件, 以下是对此的优化</p><h3 id="enforce" tabindex="-1">主动查询 <a class="header-anchor" href="#enforce" aria-label="Permalink to &quot;主动查询 {#enforce}&quot;">​</a></h3><p>一般的选择器如 <code>LinearLayout &gt; TextView</code>, 选择器需要从 根节点/事件节点 使用深度先序顺序遍历子孙节点并判断是否满足条件</p><p>如果屏幕上有 n 个节点, 判断逻辑需要运行 n 次</p><p>但是如果选择器是类似 <code>TextView &lt;3 LinearLayout &lt;2 [parent=null]</code>, 由于在右侧标明了从根节点查找</p><p>因此上面的 <code>深度先序顺序遍历子孙节点</code> 将省略, 只进行一次判断, 不需要判断 n 次</p><p>但是如果你在子查询里使用 <code>&lt;&lt;n</code>, 例如 <code>TextView &lt;&lt;n [parent=null]</code></p><p>根据上面说明的优化, 虽然也只有一次判断, 但是由于 <code>&lt;&lt;n</code> 导致内部的子判断也是 n 次, 实际上没有优化判断次数</p><p>实际上, 在初始匹配节点是 根节点 的情况下, <code>TextView</code> 和 <code>@TextView &lt;&lt;n [parent=null]</code> 完全等价</p><h3 id="ancestor" tabindex="-1">祖先节点 <a class="header-anchor" href="#ancestor" aria-label="Permalink to &quot;祖先节点 {#ancestor}&quot;">​</a></h3><p>在示例 <code>A &lt;3 [parent=null] &gt;n TextView</code> 中, 选择器找到 <code>TextView</code> 后, 根据 <code>&gt;n</code> 表示任意祖先节点</p><p>在默认情况下, 如果 <code>TextView</code> 的层级很深, 那必然需要多次调用 获取父节点 才能最终匹配</p><p>但是如果左侧的选择器是 <code>[parent=null] &gt;n</code>, 这表示找到根节点, 选择器此时不会去执行多次调用 获取父节点</p><p>在 GKD 内部, 根节点可以直接通过 API 获取, 因此 <code>[parent=null] &gt;n</code> 只需要调用一次方法</p><h2 id="fast-query" tabindex="-1">快速查询 <a class="header-anchor" href="#fast-query" aria-label="Permalink to &quot;快速查询 {#fast-query}&quot;">​</a></h2><div class="tip custom-block github-alert"><p class="custom-block-title">提示</p><p>此优化需要设置 <a href="/api/interfaces/RawCommonProps#fastquery">fastQuery</a> 来启用</p></div><p>一般情况下, 选择器 <code>[vid=&quot;name&quot;]</code> 需要从 根节点/事件节点 使用深度先序顺序遍历子孙节点并判断是否满足条件</p><p>但是 Android 提供了如下两个快速获取节点的 Api</p><ul><li><a href="https://developer.android.google.cn/reference/android/view/accessibility/AccessibilityNodeInfo#findAccessibilityNodeInfosByViewId(java.lang.String)" target="_blank" rel="noreferrer">findAccessibilityNodeInfosByViewId</a></li><li><a href="https://developer.android.google.cn/reference/android/view/accessibility/AccessibilityNodeInfo#findAccessibilityNodeInfosByText(java.lang.String)" target="_blank" rel="noreferrer">findAccessibilityNodeInfosByText</a></li></ul><p>这使得可以通过 <code>id</code>/<code>vid</code>/<code>text</code> 直接获取子孙节点</p><p>对此我们需要规定符合特定条件的选择器来调用这些 Api 从而跳过手动遍历子孙节点</p><p>所有 <code>末尾属性选择器</code>的<code>第一个属性选择表达式</code>符合下面的结构之一</p><ul><li><code>[id=&#39;abc&#39;]</code></li><li><code>[vid=&#39;abc&#39;]</code></li><li><code>[text=&#39;abc&#39;]</code></li><li><code>[text^=&#39;abc&#39;]</code></li><li><code>[text*=&#39;abc&#39;]</code></li><li><code>[text$=&#39;abc&#39;]</code></li></ul><p>或者使用 <code>||</code> 将它们连接形成的逻辑表达式也符合条件, 即如下格式</p><ul><li><code>[id=&#39;abc&#39; || id=&#39;abc2&#39;]</code></li><li><code>[id=&#39;abc&#39; || vid=&#39;abc&#39; || text=&#39;abc&#39; || text^=&#39;abc&#39; || text*=&#39;abc&#39; || text$=&#39;abc&#39;]</code></li></ul><p>这些规定的格式都是为了提取 <code>id</code>/<code>vid</code>/<code>text</code> 来调用上面的两个 Android Api</p><p>下面给出实际示例: ✅ 表示符合格式, ❎ 表示不符合格式</p><ul><li><code>A &gt; B + C[id=&#39;x&#39;][childCount=2]</code> ✅</li><li><code>A &gt; B + C[childCount=2][id=&#39;x&#39;]</code> ❎</li><li><code>A &gt; B + C[id=&#39;x&#39; || text=&#39;manbaout&#39; || text*=&#39;ikun&#39;][childCount=2]</code> ✅</li><li><code>A &gt; B + C[childCount=2][id=&#39;x&#39; || text=&#39;manbaout&#39; || text*=&#39;ikun&#39;]</code> ❎</li></ul><p>这样一个选择器只能在右侧使用快速查询, 为了在中间的子选择器也能使用</p><p>额外规定如果属性选择器如果符合上面格式并且右侧是 <code>&lt;&lt;n</code>, 也能在局部使用快速查找</p><p>示例 <code>A &gt; B + C[id=&#39;x&#39;][childCount=2] &lt;&lt;n D</code> 中的 <code>C[id=&#39;x&#39;][childCount=2] &lt;&lt;n</code> 可以使用局部快速查找</p><div class="tip custom-block github-alert"><p class="custom-block-title">提示</p><p>实际上从根节点开始匹配的选择器如 <code>A &gt; B</code> 都可等价为 <code>A &gt; @B &lt;&lt;n [parent=null]</code></p></div><p>下面给出满足局部查询优化的示例: ✅ 表示符合格式, ❎ 表示不符合格式</p><ul><li><code>A &gt; B + C[id=&#39;x&#39;][childCount=2] &lt;&lt;n D</code> ✅</li><li><code>A &gt; B + C[childCount=2][id=&#39;x&#39;] &lt;&lt;n D</code> ❎</li></ul><p>上面介绍的是只有一个局部选择器的情况, 下面给出多个局部快速查找的的示例</p><p>如 <code>A &gt; C[id=&#39;x&#39;] &lt;&lt;n D[id=&#39;y&#39;] &lt;&lt;n E</code>, 其中的 <code>C[id=&#39;x&#39;] &lt;&lt;n</code> 和 <code>D[id=&#39;y&#39;] &lt;&lt;n</code> 都可以使用局部快速查找</p><hr><p>以 <a href="https://i.gkd.li/i/16201605?gkd=W3ZpZD0iaW1hZ2UiXSA8PG4gW3ZpZD0icmVjeWNsZXJWaWV3Il0gPDxuIFt2aWQ9ImNvbnRlbnRfbGF5b3V0Il0" target="_blank" rel="noreferrer"><code>[vid=&quot;image&quot;] &lt;&lt;n [vid=&quot;recyclerView&quot;] &lt;&lt;n [vid=&quot;content_layout&quot;]</code></a> 为例</p><p>上面的选择器存在 3 个快速查找优化</p><ul><li><code>[vid=&quot;content_layout&quot;]</code> 从 根节点 优化查询找到 <code>content_layout</code></li><li><code>[vid=&quot;recyclerView&quot;]</code> 从 <code>content_layout</code> 优化查询找到 <code>recyclerView</code></li><li><code>[vid=&quot;image&quot;]</code> 从 <code>recyclerView</code> 优化查询找到 <code>image</code></li></ul><p>也就是只需要调用 <code>findAccessibilityNodeInfosByViewId</code> 3 次即可得到目标节点</p><p>如果是从根节点开始查询, 根据快照内的 选择器路径视图</p><ul><li><code>[vid=&quot;content_layout&quot;]</code> 从 根节点 需要 7 次找到 <code>content_layout</code></li><li><code>[vid=&quot;recyclerView&quot;]</code> 从 <code>content_layout</code> 需要 48 次找到 <code>recyclerView</code></li><li><code>[vid=&quot;image&quot;]</code> 从 <code>recyclerView</code> 需要 44 次找到 <code>image</code></li></ul>',48),l=[i];function a(n,r,p,u,s,h){return t(),o("div",null,l)}const f=e(d,[["render",a]]);export{b as __pageData,f as default};
1
+ import{_ as e,c as o,o as t,a8 as c}from"./chunks/framework.DAuRlsJR.js";const b=JSON.parse('{"title":"查询优化","description":"","frontmatter":{},"headers":[],"relativePath":"selector/optimize.md","filePath":"selector/optimize.md","lastUpdated":1721382947000}'),d={name:"selector/optimize.md"},i=c('<h1 id="title" tabindex="-1">查询优化 <a class="header-anchor" href="#title" aria-label="Permalink to &quot;查询优化 {#title}&quot;">​</a></h1><p>一些关于查询优化的说明</p><h2 id="query-root" tabindex="-1">查找根节点 <a class="header-anchor" href="#query-root" aria-label="Permalink to &quot;查找根节点 {#query-root}&quot;">​</a></h2><p>选择器通过满足下列格式的属性选择器标识根节点</p><ul><li><code>[parent=null]</code></li><li><code>A[id=&#39;xxx&#39;][parent=null][text=&#39;xxx&#39;]</code></li></ul><p>即只需存在一个 <code>[parent=null]</code> 就满足条件, 以下是对此的优化</p><h3 id="enforce" tabindex="-1">主动查询 <a class="header-anchor" href="#enforce" aria-label="Permalink to &quot;主动查询 {#enforce}&quot;">​</a></h3><p>一般的选择器如 <code>LinearLayout &gt; TextView</code>, 选择器需要从 根节点/事件节点 使用深度先序顺序遍历子孙节点并判断是否满足条件</p><p>如果屏幕上有 n 个节点, 判断逻辑需要运行 n 次</p><p>但是如果选择器是类似 <code>TextView &lt;3 LinearLayout &lt;2 [parent=null]</code>, 由于在右侧标明了从根节点查找</p><p>因此上面的 <code>深度先序顺序遍历子孙节点</code> 将省略, 只进行一次判断, 不需要判断 n 次</p><p>但是如果你在子查询里使用 <code>&lt;&lt;n</code>, 例如 <code>TextView &lt;&lt;n [parent=null]</code></p><p>根据上面说明的优化, 虽然也只有一次判断, 但是由于 <code>&lt;&lt;n</code> 导致内部的子判断也是 n 次, 实际上没有优化判断次数</p><p>实际上, 在初始匹配节点是 根节点 的情况下, <code>TextView</code> 和 <code>@TextView &lt;&lt;n [parent=null]</code> 完全等价</p><h3 id="ancestor" tabindex="-1">祖先节点 <a class="header-anchor" href="#ancestor" aria-label="Permalink to &quot;祖先节点 {#ancestor}&quot;">​</a></h3><p>在示例 <code>A &lt;3 [parent=null] &gt;n TextView</code> 中, 选择器找到 <code>TextView</code> 后, 根据 <code>&gt;n</code> 表示任意祖先节点</p><p>在默认情况下, 如果 <code>TextView</code> 的层级很深, 那必然需要多次调用 获取父节点 才能最终匹配</p><p>但是如果左侧的选择器是 <code>[parent=null] &gt;n</code>, 这表示找到根节点, 选择器此时不会去执行多次调用 获取父节点</p><p>在 GKD 内部, 根节点可以直接通过 API 获取, 因此 <code>[parent=null] &gt;n</code> 只需要调用一次方法</p><h2 id="fast-query" tabindex="-1">快速查询 <a class="header-anchor" href="#fast-query" aria-label="Permalink to &quot;快速查询 {#fast-query}&quot;">​</a></h2><div class="tip custom-block github-alert"><p class="custom-block-title">提示</p><p>此优化需要设置 <a href="/api/interfaces/RawCommonProps#fastquery">fastQuery</a> 来启用</p></div><p>一般情况下, 选择器 <code>[vid=&quot;name&quot;]</code> 需要从 根节点/事件节点 使用深度先序顺序遍历子孙节点并判断是否满足条件</p><p>但是 Android 提供了如下两个快速获取节点的 Api</p><ul><li><a href="https://developer.android.google.cn/reference/android/view/accessibility/AccessibilityNodeInfo#findAccessibilityNodeInfosByViewId(java.lang.String)" target="_blank" rel="noreferrer">findAccessibilityNodeInfosByViewId</a></li><li><a href="https://developer.android.google.cn/reference/android/view/accessibility/AccessibilityNodeInfo#findAccessibilityNodeInfosByText(java.lang.String)" target="_blank" rel="noreferrer">findAccessibilityNodeInfosByText</a></li></ul><p>这使得可以通过 <code>id</code>/<code>vid</code>/<code>text</code> 直接获取子孙节点</p><p>对此我们需要规定符合特定条件的选择器来调用这些 Api 从而跳过手动遍历子孙节点</p><p>所有 <code>末尾属性选择器</code>的<code>第一个属性选择表达式</code>符合下面的结构之一</p><ul><li><code>[id=&#39;abc&#39;]</code></li><li><code>[vid=&#39;abc&#39;]</code></li><li><code>[text=&#39;abc&#39;]</code></li><li><code>[text^=&#39;abc&#39;]</code></li><li><code>[text*=&#39;abc&#39;]</code></li><li><code>[text$=&#39;abc&#39;]</code></li></ul><p>或者使用 <code>||</code> 将它们连接形成的逻辑表达式也符合条件, 即如下格式</p><ul><li><code>[id=&#39;abc&#39; || id=&#39;abc2&#39;]</code></li><li><code>[id=&#39;abc&#39; || vid=&#39;abc&#39; || text=&#39;abc&#39; || text^=&#39;abc&#39; || text*=&#39;abc&#39; || text$=&#39;abc&#39;]</code></li></ul><p>这些规定的格式都是为了提取 <code>id</code>/<code>vid</code>/<code>text</code> 来调用上面的两个 Android Api</p><p>下面给出实际示例: ✅ 表示符合格式, ❎ 表示不符合格式</p><ul><li><code>A &gt; B + C[id=&#39;x&#39;][childCount=2]</code> ✅</li><li><code>A &gt; B + C[childCount=2][id=&#39;x&#39;]</code> ❎</li><li><code>A &gt; B + C[id=&#39;x&#39; || text=&#39;manbaout&#39; || text*=&#39;ikun&#39;][childCount=2]</code> ✅</li><li><code>A &gt; B + C[childCount=2][id=&#39;x&#39; || text=&#39;manbaout&#39; || text*=&#39;ikun&#39;]</code> ❎</li></ul><p>这样一个选择器只能在右侧使用快速查询, 为了在中间的子选择器也能使用</p><p>额外规定如果属性选择器如果符合上面格式并且右侧是 <code>&lt;&lt;n</code>, 也能在局部使用快速查找</p><p>示例 <code>A &gt; B + C[id=&#39;x&#39;][childCount=2] &lt;&lt;n D</code> 中的 <code>C[id=&#39;x&#39;][childCount=2] &lt;&lt;n</code> 可以使用局部快速查找</p><div class="tip custom-block github-alert"><p class="custom-block-title">提示</p><p>实际上从根节点开始匹配的选择器如 <code>A &gt; B</code> 都可等价为 <code>A &gt; @B &lt;&lt;n [parent=null]</code></p></div><p>下面给出满足局部查询优化的示例: ✅ 表示符合格式, ❎ 表示不符合格式</p><ul><li><code>A &gt; B + C[id=&#39;x&#39;][childCount=2] &lt;&lt;n D</code> ✅</li><li><code>A &gt; B + C[childCount=2][id=&#39;x&#39;] &lt;&lt;n D</code> ❎</li></ul><p>上面介绍的是只有一个局部选择器的情况, 下面给出多个局部快速查找的的示例</p><p>如 <code>A &gt; C[id=&#39;x&#39;] &lt;&lt;n D[id=&#39;y&#39;] &lt;&lt;n E</code>, 其中的 <code>C[id=&#39;x&#39;] &lt;&lt;n</code> 和 <code>D[id=&#39;y&#39;] &lt;&lt;n</code> 都可以使用局部快速查找</p><hr><p>以 <a href="https://i.gkd.li/i/16201605?gkd=W3ZpZD0iaW1hZ2UiXSA8PG4gW3ZpZD0icmVjeWNsZXJWaWV3Il0gPDxuIFt2aWQ9ImNvbnRlbnRfbGF5b3V0Il0" target="_blank" rel="noreferrer"><code>[vid=&quot;image&quot;] &lt;&lt;n [vid=&quot;recyclerView&quot;] &lt;&lt;n [vid=&quot;content_layout&quot;]</code></a> 为例</p><p>上面的选择器存在 3 个快速查找优化</p><ul><li><code>[vid=&quot;content_layout&quot;]</code> 从 根节点 优化查询找到 <code>content_layout</code></li><li><code>[vid=&quot;recyclerView&quot;]</code> 从 <code>content_layout</code> 优化查询找到 <code>recyclerView</code></li><li><code>[vid=&quot;image&quot;]</code> 从 <code>recyclerView</code> 优化查询找到 <code>image</code></li></ul><p>也就是只需要调用 <code>findAccessibilityNodeInfosByViewId</code> 3 次即可得到目标节点</p><p>如果是从根节点开始查询, 根据快照内的 选择器路径视图</p><ul><li><code>[vid=&quot;content_layout&quot;]</code> 从 根节点 需要 7 次找到 <code>content_layout</code></li><li><code>[vid=&quot;recyclerView&quot;]</code> 从 <code>content_layout</code> 需要 48 次找到 <code>recyclerView</code></li><li><code>[vid=&quot;image&quot;]</code> 从 <code>recyclerView</code> 需要 44 次找到 <code>image</code></li></ul>',48),l=[i];function a(n,r,p,u,s,h){return t(),o("div",null,l)}const f=e(d,[["render",a]]);export{b as __pageData,f as default};
@@ -0,0 +1 @@
1
+ import{_ as e,c as o,o as t,a8 as c}from"./chunks/framework.DAuRlsJR.js";const b=JSON.parse('{"title":"查询优化","description":"","frontmatter":{},"headers":[],"relativePath":"selector/optimize.md","filePath":"selector/optimize.md","lastUpdated":1721382947000}'),d={name:"selector/optimize.md"},i=c("",48),l=[i];function a(n,r,p,u,s,h){return t(),o("div",null,l)}const f=e(d,[["render",a]]);export{b as __pageData,f as default};
@@ -1 +1 @@
1
- import{g as a,c as t,o as e,a5 as s}from"./chunks/framework.CSd4LtKr.js";const m=JSON.parse('{"title":"快照审查","description":"","frontmatter":{},"headers":[],"relativePath":"snapshot/index.md","filePath":"snapshot/index.md","lastUpdated":1721312533000}'),i={name:"snapshot/index.md"},o=s('<h1 id="title" tabindex="-1">快照审查 <a class="header-anchor" href="#title" aria-label="Permalink to &quot;快照审查 {#title}&quot;">​</a></h1><p>关于快照的一些知识</p><h2 id="what-is-snapshot" tabindex="-1">什么是快照 <a class="header-anchor" href="#what-is-snapshot" aria-label="Permalink to &quot;什么是快照 {#what-is-snapshot}&quot;">​</a></h2><p>快照 是一个 zip 文件, 内部保存了设备在抓取时间点</p><ul><li>截图</li><li>界面信息</li><li>设备信息</li><li>无障碍节点信息</li></ul><h2 id="capture-snapshot" tabindex="-1">抓取快照 <a class="header-anchor" href="#capture-snapshot" aria-label="Permalink to &quot;抓取快照 {#capture-snapshot}&quot;">​</a></h2><p>在 GKD 内可以通过多种方式抓取快照</p>',7),n=[o];function r(l,h,p,c,d,_){return e(),t("div",null,n)}const f=a(i,[["render",r]]);export{m as __pageData,f as default};
1
+ import{_ as a,c as t,o as e,a8 as s}from"./chunks/framework.DAuRlsJR.js";const m=JSON.parse('{"title":"快照审查","description":"","frontmatter":{},"headers":[],"relativePath":"snapshot/index.md","filePath":"snapshot/index.md","lastUpdated":1721382947000}'),i={name:"snapshot/index.md"},o=s('<h1 id="title" tabindex="-1">快照审查 <a class="header-anchor" href="#title" aria-label="Permalink to &quot;快照审查 {#title}&quot;">​</a></h1><p>关于快照的一些知识</p><h2 id="what-is-snapshot" tabindex="-1">什么是快照 <a class="header-anchor" href="#what-is-snapshot" aria-label="Permalink to &quot;什么是快照 {#what-is-snapshot}&quot;">​</a></h2><p>快照 是一个 zip 文件, 内部保存了设备在抓取时间点</p><ul><li>截图</li><li>界面信息</li><li>设备信息</li><li>无障碍节点信息</li></ul><h2 id="capture-snapshot" tabindex="-1">抓取快照 <a class="header-anchor" href="#capture-snapshot" aria-label="Permalink to &quot;抓取快照 {#capture-snapshot}&quot;">​</a></h2><p>在 GKD 内可以通过多种方式抓取快照</p>',7),n=[o];function r(l,h,p,c,d,_){return e(),t("div",null,n)}const f=a(i,[["render",r]]);export{m as __pageData,f as default};
@@ -1 +1 @@
1
- import{g as a,c as t,o as e,a5 as s}from"./chunks/framework.CSd4LtKr.js";const m=JSON.parse('{"title":"快照审查","description":"","frontmatter":{},"headers":[],"relativePath":"snapshot/index.md","filePath":"snapshot/index.md","lastUpdated":1721312533000}'),i={name:"snapshot/index.md"},o=s("",7),n=[o];function r(l,h,p,c,d,_){return e(),t("div",null,n)}const f=a(i,[["render",r]]);export{m as __pageData,f as default};
1
+ import{_ as a,c as t,o as e,a8 as s}from"./chunks/framework.DAuRlsJR.js";const m=JSON.parse('{"title":"快照审查","description":"","frontmatter":{},"headers":[],"relativePath":"snapshot/index.md","filePath":"snapshot/index.md","lastUpdated":1721382947000}'),i={name:"snapshot/index.md"},o=s("",7),n=[o];function r(l,h,p,c,d,_){return e(),t("div",null,n)}const f=a(i,[["render",r]]);export{m as __pageData,f as default};