最近在开发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共享剪切板有关系,所有尽量不要不过于频繁的写入剪切板。

浙公网安备 33010602011771号