分类 Obsidian 下的文章

Obsidian

Android WebView 在 Jetpack Compose 工作台中的沙箱化架构与协议治理 (Sandboxed Chromium WebView Architecture and Protocol Governance in Jetpack Compose)

1. 核心概念与背景 (Core Concepts & Background)在平板/桌面级 Android AI 智能工作台(如 InPage Workbench)开发中,工作区中栏需要承载多态产物(代码文件、Markdown、PDF、图片以及网页)。网页面板不仅仅是一个只读网页查看器,还是未来 Agent 注入自动化脚本、执行 DOM 抽取、与网页内容协同交互的沙箱运行环境。在 Jetpack

Obsidian

MuPDF Fitz JNI 在 Jetpack Compose 虚拟列表中的线程安全与渲染架构 (Thread Safety and Rendering Architecture of MuPDF Fitz JNI in Jetpack Compose)

1. 适用场景与背景在 Android 原生应用中,使用高性能 C/C++ 渲染核心(如 MuPDF Fitz 引擎,com.artifex.mupdf.fitz 与 AndroidDrawDevice)进行大型 PDF 文档解析与按页栅格化渲染(Rasterization),并结合声明式 UI 框架 Jetpack Compose 的虚拟列表 LazyColumn 进行多页瀑布流呈现时,常遇到底

Obsidian

Nginx 静态资源缺失 mjs 映射导致 ESM 严格 MIME 校验拦截 (Nginx Missing mjs MIME Type Breaking ESM Module Scripts)

1. 现象与触发场景 (Symptom & Scenario)使用现代前端构建工具(如 Vite、Rollup、Webpack 5)打包时,针对 Web Worker、ES Module 动态导入或第三方库(如 pdfjs-dist 的 pdf.worker.mjs)通常会产出扩展名为 .mjs 的静态资源。触发条件前端应用通过动态 import() 或 <script type="

Obsidian

交叉观察器在已有相交元素内容失效时不触发回调 (IntersectionObserver Fails to Fire on In-Viewport Content Invalidation)

1. 现象与触发场景 (Symptom & Scenario)在连续滚动渲染(如长文档、虚拟列表、PDF 阅览器、图文流)中,通常使用 IntersectionObserver 监听每一页(或卡片)占位槽(Slot)的进入视口事件,按需渲染内部的 Heavy DOM(如 <canvas>、图片、复杂图表)。触发条件页面已在视口中完整或部分可见,内部内容已被渲染。触发外部布局变动(例如: