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();
        // 拿这个时间戳和上一条剪贴板数据获取到的时间戳做比较,如果相同则表示是同一条数据,不处理即可。
    }
});
相关推荐
simplepeng7 小时前
我的天,我真是和androidx的字体加载杠上了
android
小猫猫猫◍˃ᵕ˂◍8 小时前
备忘录模式:快速恢复原始数据
android·java·备忘录模式
CYRUS_STUDIO10 小时前
使用 AndroidNativeEmu 调用 JNI 函数
android·逆向·汇编语言
梦否10 小时前
【Android】类加载器&热修复-随记
android
徒步青云10 小时前
Java内存模型
android
今阳10 小时前
鸿蒙开发笔记-6-装饰器之@Require装饰器,@Reusable装饰器
android·app·harmonyos
-优势在我15 小时前
Android TabLayout 实现随意控制item之间的间距
android·java·ui
hedalei15 小时前
android13修改系统Launcher不跟随重力感应旋转
android·launcher
Indoraptor16 小时前
Android Fence 同步框架
android
峥嵘life17 小时前
DeepSeek本地搭建 和 Android
android