android处理程序removeCallbacks不工作

android处理程序removeCallbacks不工作,android,runnable,android-handler,Android,Runnable,Android Handler,我正在使用runnable旋转图像。我想将图像旋转4次,然后暂停/停止旋转。我编写了一些函数 public void rotateImage(final View myView, final int size) { runnable = new Runnable() { @Override public void run() { count++; myView.setRotation(myView.ge

我正在使用runnable旋转图像。我想将图像旋转4次,然后暂停/停止旋转。我编写了一些函数

public void rotateImage(final View myView, final int size) {

    runnable = new Runnable() {

        @Override
        public void run() {

            count++;
            myView.setRotation(myView.getRotation() + size);
            if (count ==3) {
                myHandler.removeCallbacks(runnable);
            }

            myHandler.postDelayed(this, 100);
            // 1000 means 1 second duration
        }
    };
    myHandler.postDelayed(runnable, 100); 

}
我可以旋转图像,但不能停止/暂停旋转。移除当前不工作的回调
如果有人知道解决方案,我的代码中有什么错误请帮助我

我的处理程序/Runnable上有相同的逻辑。而且它也没有停止

我所做的是:在我的活动现场,我打电话给

myHandler.removeCallbacksAndMessages(null);
它终于停止了

希望能有帮助


}

必须将Runnable的创建从函数“rotateImage”内部移动到任何函数调用外部。removeCallbacks工作正常,但正在重新创建可运行对象,尽管它具有相同的内容,但Id不同。 这将有助于:

private Runnable runnable = new Runnable() {

        @Override
        public void run() {

            count++;
            myView.setRotation(myView.getRotation() + size);
            if (count ==3) {
                myHandler.removeCallbacks(runnable);
            }

            myHandler.postDelayed(this, 100);
            // 1000 means 1 second duration
        }
    };
public void rotateImage(final View myView, final int size) {

    myHandler.postDelayed(runnable, 100); 

}

如果你加上退货怎么办;在myHandler.removeCallbacks(runnable)之后;?谢谢,我试过了:myHandler.removeCallbacks(null);-没用。
public void rotateImage(final View myView, final int size) {

runnable = new Runnable() {

    @Override
    public void run() {

        count++;
        myView.setRotation(myView.getRotation() + size);
        if (count ==3) {
            //myHandler.removeCallbacks(runnable);
        } else {
            myHandler.postDelayed(this, 100);
        }
        // 1000 means 1 second duration
    }
};
myHandler.postDelayed(runnable, 100); 
private Runnable runnable = new Runnable() {

        @Override
        public void run() {

            count++;
            myView.setRotation(myView.getRotation() + size);
            if (count ==3) {
                myHandler.removeCallbacks(runnable);
            }

            myHandler.postDelayed(this, 100);
            // 1000 means 1 second duration
        }
    };
public void rotateImage(final View myView, final int size) {

    myHandler.postDelayed(runnable, 100); 

}