Android处理程序:处理程序未按预期工作
我有一个按钮名btnOk,在这个按钮内我有一个普通的方法 我的想法是,经过一段时间间隔后,此按钮内的方法将自动执行Android处理程序:处理程序未按预期工作,android,handler,Android,Handler,我有一个按钮名btnOk,在这个按钮内我有一个普通的方法 我的想法是,经过一段时间间隔后,此按钮内的方法将自动执行 @Override protected void onCreate(Bundle savedInstanceState) { //Do something value(); //Create handler final Handler handler = new Handler(); //Run method automatically after 20s handler.p
@Override
protected void onCreate(Bundle savedInstanceState) {
//Do something
value();
//Create handler
final Handler handler = new Handler();
//Run method automatically after 20s
handler.postDelayed(new Runnable() {
@Override
public void run() {
// Do something after 5s = 5000ms
submitResult();
}
}, 20000);
//Wait for user clicks,
//must start in 20s or submitResult(); will be executed automatically
btn = (Button) findViewById(R.id.btnOk);
btn.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
submitResult();
}
});
}
因此,我创建了一个处理程序来延迟我的函数。我期望编程工作如下:
逻辑如下:
如果用户未单击按钮,则用户可以在20秒后单击按钮Ok=>
button=>运行该方法
我的问题是,每次我运行这个itent时,20秒都算作总数
例如:
@Override
protected void onCreate(Bundle savedInstanceState) {
//Do something
value();
//Create handler
final Handler handler = new Handler();
//Run method automatically after 20s
handler.postDelayed(new Runnable() {
@Override
public void run() {
// Do something after 5s = 5000ms
submitResult();
}
}, 20000);
//Wait for user clicks,
//must start in 20s or submitResult(); will be executed automatically
btn = (Button) findViewById(R.id.btnOk);
btn.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
submitResult();
}
});
}
我真的很感谢你的帮助。提前感谢。这将是第一个运行的
处理程序,而不是新的处理程序(在第二个活动B中创建)。如果用户单击该按钮,则应“取消”处理程序,否则它将运行两次submitResult()
试试这个:
btn.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
handler.removeCallbacks(null);
submitResult();
}
});
非常感谢,但它仍然不能作为我的开场白(@ManhNguyenVan确保您将该行添加到了OnClickListener
。这应该可以做到,除非那里发生了其他事情。非常感谢!我更改了实现,因此它现在可以完美地工作。我必须说谢谢您的想法,我在调用计时器后,在一旦单击Listener,我就调用myTimer.cancel()停止计时器。它就像一个符咒。再次感谢你,我的兄弟!