android处理程序removeCallbacks不工作
我正在使用runnable旋转图像。我想将图像旋转4次,然后暂停/停止旋转。我编写了一些函数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
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);
}