Android:OnPrimaryClipChangedListener()多次调用

时间:2017-01-09 09:13:00

标签: android

我在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;
    }
}

如何只调用一次这个方法?

1 个答案:

答案 0 :(得分:0)

我找到了解决此问题的方法,因为没有具体的解决方案。您可以在创建叠加层时实际检查,如果剪贴板中没有数据,则可以自动停止叠加。

if (clipboard.getText().isEmpty()) { selfstop(); //make a call in the overlay service to stop itself }