Android 复制完内容后会监听到多次剪贴板变化该怎么办?(onPrimaryClipChanged方法会执行多次)

最近看到剪贴板数据监听会多次回调的问题,上网搜了下发现大家都是通过判断两次收到回调的时间间隔来判断的。觉得这种方式有点走偏门的感觉,于是研究了下这块,得出了以下的总结:

第一步:请检查你是否重复添加了该Listener,例如这样:

复制代码
ClipboardManager clipboardManager = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
clipboardManager.addPrimaryClipChangedListener(listener);
clipboardManager.addPrimaryClipChangedListener(listener);

如果你多次添加该Listener,你会发现当有复制内容时,会收到很多次回调。

第二步:如果没有上述问题,请使用如下方式规避:

复制代码
ClipboardManager clipboardManager = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
clipboardManager.addPrimaryClipChangedListener(new ClipboardManager.OnPrimaryClipChangedListener() {
    @Override
    public void onPrimaryClipChanged() {
        ClipData data = clipboardManager.getPrimaryClip();
        long clipDataTimestamp = data.getDescription().getTimestamp();
        // 拿这个时间戳和上一条剪贴板数据获取到的时间戳做比较,如果相同则表示是同一条数据,不处理即可。
    }
});
相关推荐
心中有国也有家3 小时前
AtomGit Flutter 鸿蒙客户端:Canvas 绘制进阶-路径、渐变与混合模式
android·javascript·flutter·华为·harmonyos
hunterandroid5 小时前
WorkManager 可靠性实战:唯一任务、重试与幂等设计
android·前端
程序员老刘5 小时前
Android 17的10个AI功能,国内用户真正能用的有几个?
android·flutter·ai编程
花开彼岸天~6 小时前
鸿蒙应用开发实战【94】— 实战多卡号场景管理最佳实践
android·华为·harmonyos·鸿蒙系统
用户41659673693556 小时前
视频源文件音频轨异常分析记录
android
雨白9 小时前
嵌套 ScrollView 滑动冲突实战:实现内部优先滚动
android
阿pin9 小时前
Android随笔-IntentService详解(了解)
android·intentservice
海天鹰9 小时前
content://com.android.externalstorage.documents/document/primary%3A
android
阿pin10 小时前
Android随笔-WorkManager 与 AlarmManager
android·alarmmanager·workmanager
帅帅的记忆11 小时前
uniapp项目调用原生android studio的sdk文件(即aar文件)
android·uni-app·android studio