Java 删除已异步发布的runnable
我想删除一个已发布在改装的onResponse回调中的可运行对象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
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…但您使用的是不同的处理程序
,请仅使用一个处理程序