_嵌入式开发_

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

最近在开发flutter项目,项目中需要收集蓝牙数据,为了方便调试将蓝牙数据保存到了剪切板里。调试中返现,在iOS设备上短时间内频繁写入剪切板,

控制输出PBItemCollectionServicer connection disconnected

页面短暂卡死,

查了下发现在

https://www.infoq.cn/article/vib28kwpz5mszplfeycp

中发现,

系统 api 底层实现存在跨进程通信

问题描述

因为跨进程通信需要与其他进程同步,一旦其他进程发生异常或者挂起,很有可能造成当前 App 卡死。典型 case:

  • UIPasteBoard,特别是 OpenUDID。因为 OpenUDID 这个库为了跨 App 可以访问到相同的 UDID,通过创建剪切板和读取剪切板的方式来实现的跨 App 通信,外部每次调用 OpenUDID 来获取一次 UDID,OpenUDID 内部都会循环 100 次,从剪切板获取 UDID,并通过排序获得出现频率最高的那个 UDID,也就是这个流程可能最终会导致访问剪切板卡死。

可能和iOS共享剪切板有关系,所有尽量不要不过于频繁的写入剪切板。

 

posted on 2022-01-22 14:58  _嵌入式开发_  阅读(562)  评论(0)    收藏  举报