我在Service类中实现了addPrimaryClipChangedListener()
。但是当我复制一些文本时,多次调用onPrimaryClipChanged()
方法。
输出:
RESUT:copy text RESUT:copy text RESUT:copy text
mycode的
public class MyService extends Service {
private ClipboardManager mCM;
@Override
public int onStartCommand(final Intent intent, int flags, int startId) {
mCM = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
// registerPrimaryClipChanged();
mCM.addPrimaryClipChangedListener(new ClipboardManager.OnPrimaryClipChangedListener() {
@Override
public void onPrimaryClipChanged() {
String copyText = mCM.getText().toString();
Log.d("RESULT", copyText);
}
});
return START_STICKY;
}
@Override
public void onDestroy() {
super.onDestroy();
}
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
}
如何只调用一次这个方法?
答案 0 :(得分:0)
我找到了解决此问题的方法,因为没有具体的解决方案。您可以在创建叠加层时实际检查,如果剪贴板中没有数据,则可以自动停止叠加。
if (clipboard.getText().isEmpty()) {
selfstop(); //make a call in the overlay service to stop itself
}