2017-01-09 116 views
0

我在Service类中实现了addPrimaryClipChangedListener()。但是当我复制一些文本时,onPrimaryClipChanged()方法被多次调用。Android:OnPrimaryClipChangedListener()多次调用

输出:

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

我找到了解决此问题的方法,因为没有具体的解决方案。实际上,您可以在创建覆盖图时进行检查,如果剪贴板中没有数据,则可以自动覆盖覆盖图。

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