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();
        // 拿这个时间戳和上一条剪贴板数据获取到的时间戳做比较,如果相同则表示是同一条数据,不处理即可。
    }
});
相关推荐
长友cy2 小时前
windows 搭建Qt编译Android 应用程序,快速搭建
android·windows
智驭未来掌门人3 小时前
Android Kotlin 开发避坑指南:从语言特性到工程化实践
android
码农coding3 小时前
android12 ViewRootImpl分析
android
stevenzqzq3 小时前
compose项目返回到当前页面闪烁原因分析
android
古法安卓4 小时前
Android-显示流程
android·java·android studio
CircleMouse4 小时前
画一个Android智能手机机器人
android·智能手机·机器人
数据知道5 小时前
PHP 代码审计实战——ThinkPHP、Laravel 历史漏洞模式深度剖析
android·网络·web安全·网络安全·php·laravel
拍客圈5 小时前
换服务器 mozcjpeg 5.0.0
android
蜡台6 小时前
Jetpack Compose 稳定性、重组优化(Stable / @NonRestartableComposable)
android·kotlin·compose·jepack
__Witheart__7 小时前
3588 Android 13 预装apk失败 —— 不再使用apps.mk
android