当我将文本复制到剪贴板时,onPrimaryClipChanged 方法被调用了两次。任何想法为什么?
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
final ClipboardManager cliboardManager = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
cliboardManager
.addPrimaryClipChangedListener(new OnPrimaryClipChangedListener() {
@Override
public void onPrimaryClipChanged() {
ClipData clipData = cliboardManager.getPrimaryClip();
System.out
.println("********** clip changed, clipData: "
+ clipData.getItemAt(0));
}
});
return true;
}
测试用例:从 BBC 网站复制文本“继续”将产生以下输出:
继续
继续
但是,如果我调试程序,我可以看到 clipData 对象具有值:
ClipData { text/plain {T:continue } }
第一次调用 onPrimaryClipChanged() 并且
ClipData { text/plain "BBC - 主页" {T:continue } }
下一次 onPrimaryClipChanged() 被调用。
所以基本上第一次 ClipDescription 是 { text/plain } 而第二次是 ClipDescription { text/plain "BBC - Homepage" } (即包括网页的标题)