Java 删除已异步发布的runnable

Java 删除已异步发布的runnable,java,android,multithreading,retrofit,Java,Android,Multithreading,Retrofit,我想删除一个已发布在改装的onResponse回调中的可运行对象 handlerStaff().postDelayed(showhideAcceptPasswordAnimationRunnable, AppConfig.showhideAcceptDelay); private static Handler handlerStaff() { return mainThreadHandler = new Handler(Looper.getMainLooper()); } han

我想删除一个已发布在改装的onResponse回调中的可运行对象

handlerStaff().postDelayed(showhideAcceptPasswordAnimationRunnable, AppConfig.showhideAcceptDelay);


private static Handler handlerStaff() {
    return mainThreadHandler = new Handler(Looper.getMainLooper());
}


handlerStaff().removeCallbacks(showhideAcceptPasswordAnimationRunnable); 

我正在使用Handler类的removeCallbacks()方法在runnable被执行之前删除它,但是runnable没有被删除…

根据@pskink,我没有使用Handler类的同一个实例…我实现了一个Singleton模式之王,所以handlerStaff()仅返回处理程序对象的同一实例…因此可运行对象可以在执行之前删除

private static Handler handlerStaff() {
    if ( mainThreadHandler == null ) mainThreadHandler = new Handler(Looper.getMainLooper());
    return mainThreadHandler;
}

无论何时调用,都返回处理程序对象的同一实例。

使用一个
处理程序,而不是两个不同的处理程序MainThreadHandler实例是静态的…我使用一个Handlerno,您在调用
handlerStaff()
两次我第一次调用handlerStaff()时要发布一个runnable并在执行前删除第二个runnable…但您使用的是不同的
处理程序
,请仅使用一个
处理程序