自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(340)
  • 收藏
  • 关注

原创 鸿蒙 设备信息获取System模块

本文介绍了HarmonyOS系统API的主要功能模块和使用方法,包括:1. 设备信息获取(型号、版本、品牌等);2. 系统状态监控(电量、内存、存储、网络);3. 系统控制功能(电源管理、振动、亮度调节);4. 事件监听(按键、系统状态、包管理);5. 系统工具(进程管理、属性访问);6. 高级功能(权限管理、电源优化、系统更新)。文章还展示了如何封装工具类来简化API调用,并强调了需要声明的相关权限。这些API为开发者提供了全面的系统级操作能力,可用于构建功能丰富的HarmonyOS应用。

2025-08-11 18:00:00 20

原创 鸿蒙应用 沉浸式与非沉浸式混合实现

本文介绍了在鸿蒙OS应用中实现页面沉浸式和非沉浸式切换的方法。主要包含两种实现方案:1)通过页面生命周期控制,在onPageShow/onPageHide中设置窗口样式;2)通过路由拦截器统一管理。文章详细说明了全局窗口样式设置、沉浸式页面实现、页面切换效果等核心代码,并提供了状态栏颜色自适应、手势兼容等特殊场景的处理方案。开发者可根据实际需求选择适合的方式,实现不同页面的沉浸式效果切换。

2025-08-11 06:30:00 164

原创 鸿蒙中 字符串处理String模块

本文系统介绍了鸿蒙(HarmonyOS)开发中的字符串处理方法,包括标准String方法、特有API和性能优化技巧。标准方法涵盖查询(charAt、indexOf)、操作(substring、replace)、分割(split)等基础功能;特有API重点介绍@ohos.i18n模块的国际化处理、@ohos.util的编解码和StringBuffer高效拼接;性能优化部分提出使用数组join或StringBuffer替代"+"拼接,以及正则表达式缓存策略。文章还提供了字符串工具类封装示例,

2025-08-10 18:00:00 206

原创 鸿蒙 Web组件常见报错排查

本文总结了鸿蒙Web组件常见问题的排查与解决方法。主要内容包括:1)基础检查(错误日志、网络权限、URL验证);2)常见问题处理(页面加载失败、SSL证书问题、跨域问题、内存泄漏);3)调试技巧(远程调试、日志拦截、JS交互、性能监控);4)系统级排查(WebView版本、系统设置、兼容性检查);5)错误报告机制。文章提供了详细的代码示例,涵盖从基础配置到高级调试的全流程解决方案,帮助开发者快速定位和解决Web组件相关问题。

2025-08-10 06:30:00 363

原创 鸿蒙中 fileio与fs模块(文件与存储)

鸿蒙系统文件操作API主要包含基础文件操作、文件读写、流式处理等核心功能。通过@ohos.fileio和@ohos.file.fs模块提供文件/目录检查、创建、删除等基础方法,支持同步/异步读写操作,并包含文件流处理能力。还提供文件属性修改、路径操作、文件监控等高级功能,可封装为FileUtil工具类统一管理。使用时需注意权限声明、沙箱限制、性能优化等要点,建议采用异步处理大文件操作,规范路径拼接方式,并做好错误捕获处理。这些API为开发者提供了完整的文件系统操作能力,支持构建各类文件管理功能。

2025-08-09 18:00:00 336

原创 鸿蒙中 自定义主题

本文介绍了鸿蒙系统(HarmonyOS)中实现自定义主题的完整方案,包括基础主题定义、动态切换和深色模式适配。内容涵盖:1.在资源文件中定义颜色、主题和样式;2.在应用配置和页面中应用主题资源;3.通过ThemeManager实现动态主题切换;4.响应系统深色模式自动适配;5.扩展字体等主题样式资源。该方案支持通过资源文件灵活配置主题,并提供了主题切换组件和系统主题自动适配功能,帮助开发者构建风格统一且支持动态换肤的鸿蒙应用。

2025-08-09 06:30:00 208

原创 鸿蒙中 启动页面和广告页面

/ 启动页显示时间// 加载启动页if (err) {console.error('加载启动页失败: ' + JSON.stringify(err));return;// 设置启动页显示时间后跳转});// 结束自身console.error('启动主Ability失败: ' + JSON.stringify(err));});

2025-08-08 18:00:00 358

原创 鸿蒙中 图像处理和操作Image模块

鸿蒙系统(HarmonyOS)的Image模块提供了完整的图像处理API体系,主要包含七大核心功能:1)通过ImageSource实现图像解码和源数据管理;2)利用PixelMap进行像素级操作(缩放/旋转/裁剪);3)通过ImagePacker完成图像编码输出;4)支持AnimatedImageSource处理GIF等动态图像;5)提供ImageCache实现图像缓存管理;6)通过EffectKit应用多种滤镜效果;7)支持IncrementalSource实现大图增量加载。该模块采用链式调用设计,支持从

2025-08-08 06:30:00 2129

原创 鸿蒙 轮播图Swiper组件自定义指示器

鸿蒙开发中实现自定义Swiper指示器的核心方法:通过@State变量记录当前索引,监听Swiper的onChange事件更新状态,使用@Builder构建自定义指示器组件。开发者可以灵活扩展数字、图文组合、进度条等多种样式,并添加动画效果和手势控制。优化技巧包括使用防抖函数减少刷新频率、采用轻量级组件等。完整示例展示了包含动态进度条、导航按钮和半透明背景的高级实现方案,使开发者能够根据项目需求创建个性化的轮播图指示器。

2025-08-07 18:00:00 340

原创 鸿蒙中的 位置服务

本文介绍了位置服务的核心功能与实现方法。主要包括GNSS定位、网络定位、地理编码/逆地理编码等基础功能,以及国家码识别、地理围栏等高级应用。详细说明了ohos.permission.LOCATION等必要的权限要求,并介绍了geolocation和geoLocationManager两个关键模块的使用方法。文章还列举了导航跟踪、地理围栏、地图集成三大典型应用场景,通过示例代码展示了获取当前位置、设置地理围栏等具体实现方式。这些内容为开发者实现精准定位功能提供了完整的技术参考。

2025-08-07 06:30:00 713

原创 鸿蒙 轮播显示Swiper组件

摘要:Swiper是鸿蒙系统的滑块视图组件,支持水平/垂直滑动、自动轮播、循环播放等功能。核心特性包括导航点指示器(圆点/数字样式)、动画性能优化(自定义曲线和预加载)以及编程控制(通过SwiperController)。提供基础配置属性(loop、autoPlay等)、指示器定制和高级控制(showIndex、refresh等)。示例展示基础轮播、图片轮播和编程控制实现,并介绍动态数据更新和自定义指示器的高级用法。Swiper组件适用于各类滑动展示场景,具有高度可定制性。

2025-08-06 18:00:00 1239

原创 鸿蒙 Ability之间的通信方式

鸿蒙系统Ability通信机制包含多种方式:Want机制实现启动时数据传递;startAbilityForResult处理回调通信;DataAbility支持跨应用数据共享;ServiceAbility建立长连接;EventHub实现同进程通信;AppStorage共享全局状态;CommonEvent处理系统级事件;Call调用适用于系统应用高频通信。不同场景可选择最佳方案,如Want轻量传递、DataAbility标准化接口、ServiceAbility实时交互等,满足从简单数据传递到高性能通信的多样化需

2025-08-06 06:30:00 614

原创 鸿蒙中 信息提醒Badge组件

即可关注,每个工作日都有文章更新。

2025-08-05 18:00:00 567

原创 鸿蒙中,HAR 和 HSP的区别

摘要: 鸿蒙开发中,HAR(静态共享库)与HSP(动态共享库)是两种共享机制。HAR通过编译时复用代码,支持跨应用共享,性能更优但会增加包体积;HSP通过运行时动态加载实现应用内共享,优化包体积但性能稍弱。HAR适用于工具类等跨应用场景,HSP适合应用内模块复用。开发者可根据性能需求、共享范围及包体积要求选择,二者亦可结合使用以实现资源与性能的平衡。

2025-08-05 06:30:00 426

原创 鸿蒙中 文本输入Text 组件

本文摘要:HarmonyOS文本组件API功能详解,涵盖基础属性(字号范围、删除线等)、高级布局(文本测量、选区控制)、交互动画(手势事件、复合动画)、国际化与无障碍支持、性能优化(缓存复用、异步渲染)以及图文混排实现。版本适配显示,基线偏移(API10+)、文本选区(API11+)等功能支持元服务/卡片应用,LayoutManager(API12+)等仅限元服务使用。

2025-08-04 18:00:00 403

原创 鸿蒙 LazyForEach内存优化机制

LazyForEach是鸿蒙系统优化长列表性能的核心组件,通过虚拟化渲染机制实现显著内存优化。其核心原理包括:仅实例化可视区域组件并动态回收销毁屏幕外组件,配合组件回收池复用机制和差异更新算法。相比普通ForEach,在处理1000项列表时内存占用可降低85%(从85MB降至12MB),同时保持60fps流畅滚动。开发时需注意组件轻量化、避免内存泄漏、合理设置缓存数量(推荐3-5个缓冲组件)等最佳实践。该组件特别适合50-1000项的中长列表场景,通过智能缓存平衡内存占用与滚动性能。

2025-08-04 06:30:00 1078

原创 鸿蒙中 帧动画ImageAnimator组件

ImageAnimator是HarmonyOS中用于播放帧动画的组件,支持逐帧播放图片并实现丰富的动画效果。主要功能包括:1)通过images数组设置帧图片序列;2)控制播放状态(开始/暂停/停止/恢复);3)定制播放参数(时长/次数/方向);4)监听动画事件(开始/暂停/完成等)。关键属性包含duration(总时长)、iterations(播放次数)、state(控制状态)等,支持通过ImageFrameInfo对象配置每帧的图片路径、尺寸和显示时长。该组件提供完整的事件回调和方法控制,适用于需要动态展

2025-08-03 18:00:00 1408

原创 鸿蒙应用 多环境打包方案(类似Android变体)

鸿蒙系统通过构建配置变体实现多环境打包方案,支持为不同环境(test/prod)生成差异化安装包。核心实现包括:1)在build-profile.json5中定义环境维度和签名配置;2)配置环境专属资源文件;3)创建环境配置加载器;4)设置差异化打包命令。该方案支持环境变量控制代码逻辑、差异化资源文件和专用页面,通过Hvigor任务实现环境隔离构建,输出不同签名的HAP包。相比Android的Gradle变体,鸿蒙采用products定义环境维度,通过resourceGroups管理差异化资源,实现了类似功

2025-08-03 06:30:00 1080

原创 鸿蒙 Image组件的API详解

本文详细介绍了图片处理API的核心功能,主要包含:1)图片源设置与加载控制;2)尺寸布局调整;3)渲染效果优化;4)边框样式设置;5)事件回调处理。系统提供了丰富的枚举类型(ImageFit、ImageInterpolation等)控制图片显示效果,支持SVG处理、共享元素动画、渐进式加载等特殊场景,并通过解码尺寸限制、懒加载等API优化性能。最后给出了包含动态参数控制的进阶组合示例,展示了如何通过状态变量实现交互式图片效果调整。

2025-08-02 18:00:00 632

原创 鸿蒙中 Promise.all 的等待机制(四)

本文详细解析了Promise.all的核心机制与实现原理。其核心在于:1)通过订阅机制并行监听所有Promise状态;2)使用计数器跟踪完成状态,按原始顺序保存结果;3)任一拒绝立即触发整体失败。底层实现主要包含Promise包装、原子计数和结果存储三个关键步骤。相比其他并发方法,Promise.all适合需要全部结果的场景,具有内存中等、CPU开销低的特点。典型应用包括并行请求处理,特殊场景涵盖空数组、非Promise值和错误优先处理。其本质是基于微任务调度的状态订阅机制,确保结果处理的顺序性和原子性。

2025-08-02 06:30:00 731

原创 鸿蒙 实现编译时环境切换(二)

本文介绍了两种环境配置切换方案:手动脚本方案适用于简单项目,通过创建环境配置文件、修改编译配置和自定义编译脚本实现环境切换;编译插件方案适用于企业级项目,通过自定义插件实现完全自动化的环境切换。文章详细说明了两种方案的具体实现步骤,包括环境变量配置、文件修改和脚本编写等,并提供了环境安全、缓存清理和多环境支持等注意事项。开发者可根据项目规模选择合适方案,其中中小项目推荐手动脚本方案,大型项目推荐编译插件方案。

2025-08-01 18:00:00 539

原创 鸿蒙中 Promise.all()的实现原理(三)

本文详细解析了Promise.all的核心特性与手写实现方案。Promise.all在全部成功时返回结果数组(保持顺序),任一失败立即拒绝,且能处理非Promise值。基础实现包含类型检查、空数组处理和顺序保持机制,通过Promise.resolve包装统一处理值类型。增强版可添加超时控制、进度回调等功能。关键技巧包括索引存储保持顺序、原子性计数和统一值处理。测试用例验证了基础功能、错误处理和边界情况。与原生实现的差异主要在迭代器支持和错误类型上。进阶建议包括可迭代对象支持、取消功能和性能优化。典型应用场景

2025-08-01 06:30:00 468

原创 鸿蒙 promise 一个线程同时发送多个请求的原理(二)

鸿蒙应用开发中,JavaScript通过事件循环机制和异步I/O实现单线程并发HTTP请求。核心原理是利用底层系统线程处理网络请求,通过Promise.all+fetch、for...of+await控制并发数或Promise.allSettled获取全部结果三种方式实现"伪并发"。底层依赖libuv事件循环,网络I/O由系统线程池处理,性能瓶颈主要在DNS解析、TCP连接等环节。相比多线程方案,单线程并发更适合IO密集型任务,具有开发简单、内存开销小的优势。最佳实践建议:IO密集型任务

2025-07-31 18:00:00 780

原创 鸿蒙开发中 app的更新功能

本文介绍了鸿蒙开发中的多种更新实现方法:1)系统原生更新功能,支持标准弹窗和自定义界面;2)OTA远程更新,适合全量/差分升级;3)动态加载模块更新,实现按需加载;4)分布式更新,支持多设备协同。每种方法各有优劣,系统更新最简便但界面固定,OTA功能强大但实现复杂,动态加载节省资源但需模块化设计,分布式更新适合多设备场景。开发者可根据具体需求选择适合的更新方案,平衡功能需求与实现成本。

2025-07-31 06:30:00 1035

原创 鸿蒙 @ohos.net.http的默认最大并发数

【摘要】鸿蒙系统默认限制HTTP请求最大并发数为100,使用@ohos.net.http模块时超过此限制会导致请求失败。开发者可通过请求合并、分批处理或任务队列优化并发请求。系统提供TaskPool机制实现并发控制,示例代码展示了如何通过任务池管理批量请求。需注意:高并发可能耗尽系统资源,弱网环境应降低并发数并增加超时机制,网络请求需申请INTERNET权限。合理控制并发数有助于平衡应用性能与系统稳定性。

2025-07-30 18:00:00 490

原创 鸿蒙应用更新:updateManager 与 OTA 安装实现详解

特性自定义 OTA安装权限无需需要 INSTALL_BUNDLE 权限安装位置应用市场应用内直接安装用户交互跳转到应用市场应用内完成所有流程流程控制系统控制开发者完全控制适用场景应用市场分发企业内部分发/热更新// 1. 检查文件是否存在if (!throw new Error('HAP文件不存在');// 2. 请求安装权限if (!throw new Error('用户拒绝安装权限');// 3. 执行安装if (err) {

2025-07-30 06:30:00 567

原创 鸿蒙开发 OTA升级自动安装更新包

本文详细介绍了鸿蒙系统OTA升级的实现方案。核心流程包括:1)申请INSTALL_BUNDLE权限;2)下载并验证更新包完整性;3)使用BundleInstaller安装更新。重点强调了安全验证机制,包括文件哈希校验和签名验证,并提供了完整的错误处理方案。文章还给出企业级优化建议,如差分更新、安装后验证和失败恢复策略。实施过程中需注意权限管理、用户确认和安全验证等关键环节,推荐优先使用官方@ohos.update接口,确保升级过程的安全可靠。

2025-07-29 18:00:00 263

原创 鸿蒙开发中 单线程异步(2)

本文通过快餐店比喻,解释了单线程异步的工作原理和鸿蒙系统的增强设计。异步模式让单线程高效处理多任务,JavaScript通过调用栈、任务队列和事件循环实现异步。鸿蒙扩展了多线程能力,提供UI线程、TaskPool和Worker三种线程类型。文章还解答了常见误区,并强调主线程应只处理轻量任务,耗时操作需交由其他线程。最后通过代码示例展示了微任务与宏任务的执行顺序差异,总结了单线程异步的黄金法则。

2025-07-29 06:30:00 1662

原创 鸿蒙开发中 Promise的理解

Promise是处理异步操作的核心机制,在鸿蒙开发中尤为重要。它通过三种状态(Pending、Fulfilled、Rejected)管理耗时操作,避免界面卡顿。鸿蒙要求所有文件读写、网络请求等异步API都必须使用Promise处理,既解决了回调地狱问题,又统一了异步标准。开发者可以通过.then()和.catch()链式调用优雅地处理异步流程,或使用async/await语法糖。Promise确保了JavaScript单线程环境下的非阻塞执行,是鸿蒙应用开发的基础工具。

2025-07-28 18:00:00 623

原创 鸿蒙开发中 并发优化

本文介绍了鸿蒙系统的三种并发编程模型:1)Promise/async-await适用于轻量异步任务,2)TaskPool适合CPU密集型短任务,3)Worker适合长时间复杂计算。详细说明了Promise的基础和高级用法,包括并行执行和序列控制。重点阐述了线程通信机制,包括Worker线程创建、消息传递和任务管理,以及TaskPool的批量任务执行方式。通过对比表展示了TaskPool和Worker的特性差异,并给出选择建议:I/O密集型用Promise,短CPU任务用TaskPool,长耗时任务用Work

2025-07-28 06:30:00 703

原创 鸿蒙开发中 状态刷新控制优化

本文总结了状态刷新控制的核心原则和优化策略。核心原则包括:保证UI与状态一致性,最小化无效刷新;按共享范围选择装饰器(@State、@Link、@Provide等);避免冗余状态变量和批量更新优化。重点介绍了@Watch装饰器的高级应用场景和复杂对象优化策略,包括@Track精细控制和@Observed+@ObjectLink组合。最后提出性能优化建议:避免@Watch中的耗时操作,使用临时变量减少状态更新,对复杂对象采用引用传递,优先使用组件内状态。开发建议包括新项目优先使用V2装饰器,性能敏感场景使用@

2025-07-27 18:00:00 1134

原创 鸿蒙中 启动模式launchType = “specified“

鸿蒙系统中,launchType设为"specified"时允许自定义Ability实例复用逻辑。开发者需在module.json5中声明"onAcceptWant":true并实现对应的onAcceptWant方法,通过返回布尔值决定是否复用现有实例(如相同ID则复用)。该模式适用于商品详情页、聊天窗口等需要条件性复用的场景,需注意必须实现onAcceptWant方法,并在复用实例时手动清理旧数据。与路由跳转不同,specified模式需通过onNewWant处理新

2025-07-27 06:30:00 457

原创 鸿蒙 装饰器:@Param使用与原理

本文介绍了ArkUI的@Param装饰器使用方法及特性。@Param用于在@ComponentV2组件中声明接收父组件的只读响应式参数,仅支持单向数据流(父→子)。文章对比了@Param与@Link、@Prop等装饰器的区别,详细说明了基本类型传参、类对象传参的使用方法,并针对对象属性修改问题提出了三种解决方案。此外还介绍了联合类型、参数校验等高级特性,给出了不同场景下的装饰器选择建议。@Param通过浅比较机制实现性能优化,强制单向数据流确保明确性,并依托TS实现类型安全。对于复杂对象,建议采用不可变数据

2025-07-26 18:00:00 379

原创 鸿蒙中 UIAbility 和 页面/组件生命周期

鸿蒙应用开发中,生命周期方法分为页面和组件两类。页面生命周期包括onPageShow(显示时)、onPageHide(隐藏时)、onBackPress(返回键拦截)等;组件生命周期主要为aboutToAppear(创建时)和aboutToDisappear(销毁时)。UIAbility作为应用核心单元,管理窗口状态,包含onCreate、onWindowStageCreate等方法。典型场景包括首次启动、页面跳转、后台切换等,需注意不同场景下方法的触发顺序和差异。开发中应合理使用生命周期进行资源管理、数据初

2025-07-26 06:30:00 996

原创 鸿蒙中 @Local 装饰器的使用

文章摘要: 本文介绍了ArkUI框架中@Local装饰器的核心概念与应用。@Local用于@ComponentV2组件的私有状态管理,具有轻量级、仅触发当前组件更新的特性,需显式初始化且不可跨组件传递。与@State相比,@Local作用域更局限但性能更优。通过示例展示了基础用法(如字符串状态修改)和类对象处理(需配合@ObservedV2/@Track)。注意事项包括:需HarmonyOS4.0+支持、适合高频临时状态、禁止父子组件传递@Local,并强调其完全私有化的状态隔离特性。

2025-07-25 18:00:00 377

原创 鸿蒙开发中 单线程异步模型

鸿蒙(HarmonyOS)应用开发采用单线程异步模型,通过事件循环机制实现非阻塞任务处理。核心机制包括任务优先级排序(同步代码、微任务、宏任务、UI渲染)和基础实现方式(Promise、async/await)。鸿蒙特有实现包括TaskPool轻量级并行和Emitter事件总线。该模型优势在于避免主线程阻塞、开发复杂度低、内存占用较少,特别适合UI操作和轻量级任务。开发者可通过合理运用异步模型,在保证UI流畅性的同时处理复杂业务逻辑,并通过DevEco Studio工具进行性能优化。

2025-07-25 06:30:00 818

原创 鸿蒙开发中 组件的绘制优化

本文系统介绍了HarmonyOS应用界面性能优化策略。基础优化包括减少嵌套层级、使用专用布局组件;中级技巧涉及条件渲染优化和组件缓存;高级优化涵盖列表性能极致优化与离屏绘制。文章还介绍了性能分析工具的使用方法,并总结出"先做减法、再做缓存、最后加速"的黄金法则,通过实测数据展示各项优化措施带来的显著性能提升。

2025-07-24 18:00:00 330

原创 鸿蒙开发中 Promise 机制的解析

《鸿蒙系统中的Promise机制解析》 摘要:鸿蒙系统(HarmonyOS)对JavaScript的Promise进行了深度定制和优化,使其成为处理异步任务的核心机制。鸿蒙版Promise在保持ECMAScript标准特性的同时,新增了与Ability生命周期绑定的自动取消机制,并采用Native线程池提升执行效率。开发中可通过.then()链式调用处理异步操作,结合async/await提升可读性。鸿蒙还扩展了特定功能,如与UIAbility联动的任务管理、系统API封装等高级用法。建议开发者将异步操作统

2025-07-24 06:30:00 315

原创 鸿蒙中 UIAbility可以包含多个windowState吗?

鸿蒙系统UIAbility支持多WindowStage设计,主要用于分屏、悬浮窗等大屏场景。每个UIAbility实例默认关联一个主WindowStage,但可创建多个独立窗口,各自管理生命周期和渲染线程。开发时需在配置中声明支持多窗口,并通过EventHub实现窗口间通信。虽然多WindowStage会带来额外内存开销(每个约10-20MB),但能更好适配折叠屏/平板设备。建议普通应用使用单窗口模式,复杂场景才启用多窗口功能,并注意及时销毁无用窗口以优化性能。

2025-07-23 18:00:00 966

原创 鸿蒙中 访问相册图片和实现拍照上传

本文介绍了HarmonyOS应用中访问相册图片、拍照上传功能的完整实现流程,包括三个核心环节:1)权限申请与相册访问,需在配置文件中声明并动态请求权限,使用PhotoViewPicker选择图片;2)拍照功能实现,通过Camera API获取图像并保存为临时文件;3)图片上传处理,将图片转为Base64格式后通过HTTP请求发送到服务器。文中提供了关键代码示例,并特别提醒需注意真机调试、URI转换、大文件分块上传等实现细节。该方案适用于头像上传等常见图片处理场景。

2025-07-23 06:30:00 438

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除