我是Android新手......我开发了一个应用程序,通过单击按钮来转换图像,并添加Handler Runnable以自动获取图像转换(也可以在未按下按钮时),延迟时间为5000ms。但我必须在此时按下按钮停止处理程序,因为某些原因我无法执行此操作。如何停止postnlay中的Runnable Handler
public class MainActivity extends AppCompatActivity {
private Integer images[]={R.drawable.pic1, R.drawable.pic21, ....
public int currImage=0;
public int ThreadCnt = 0;
public boolean backInt=true,forwardInc=false, ThreadInc=true;
...
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
...
initializeImageSwitcher();
setInitialImage();
setImageRotateListener();
final Handler handler = new Handler();
final Runnable run = new Runnable() {
@Override
public void run() {
//forwardInc is a Boolean indicating that click button occurred
if(forwardInc){
//and in this case (of forwardInc=true) I want to stop runnable for 5sec
handler.removeCallbacks(this);
handler.postDelayed(this, 5000);
forwardInc=false;
setInitialImage();
setImageRotateListener();
currImage++;
ThreadCnt++;
}
handler.postDelayed(this, 5000);
}
};
handler.post(run);
,这是该按钮的代码单击
public void setImageRotateListener() {
final Button rotatebutton=(Button) findViewById(R.id.btnRotateImage);
rotatebutton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
currImage++;
//forwardInc indicating that click button occurred
forwardInc=true;
...
setCurrentImage();
...
呼叫'handler.removeCallbacks(运行)'取消那个'Runnable'。 – CommonsWare
但我已经将它添加到run()方法中的if语句中。 handler.removeCallbacks(本); –
@CommonsWare,但我已经将它添加到run()方法中的if语句中。 'handler.removeCallbacks(本);' –