例如:我有一个按钮,如果按下它将调用一个函数来从 API 获取数据到屏幕。但是如果用户再次按下并且该函数仍在运行(正在处理),我该如何停止调用该函数。
而不是隐藏按钮有什么办法来处理它?我需要使用线程来处理它吗?检查线程是否还活着?我对此并不熟悉。请给我一些关于如何处理它的建议和例子。
对不起,我的英语不好。谢谢。
如果你调用的函数是同步的,你应该没有任何问题。如果函数是启动一个线程,那么你可以这样做:
Thread mThrd = null;
public void func() {
if(mThrd!=null && mThrd.isRunning()) {
return;
}
mThrd = new Thread(/*the runnable that do the job*/);
mThrd.start();
}
如果函数是一个框架API,只是“在后台做某事”,它可能有一些方法告诉你它是否完成,或者你可以通过一些方法检查结果。喜欢:
public void func() {
if(checkDone()) {
return;
}
callFrameworkAPI();
}
按下按钮时会boolean
转动。true
当它为真时,执行该方法的正常功能。然后让它在人再次按下按钮时boolean
转动false
。如果它是假的,让它做你想做的事break
,或者return
什么都不做。
当您调用该函数时,将以下行添加到您的函数中,这将使该按钮在单击一次后无法单击。
Button b1 = findViewById(R.id.button_name);
b1.setClickable(false);
完成 api 获取后,可能是您的情况下的函数结束,添加以下行,以使按钮再次可点击。
b1.setClickable(true);