我希望用户按下按钮。
当调用按钮的onClickListener时,我想显示一个微调器,直到获取该网页。
我不想使用AsyncTask,因为它只能运行一次,而且很可能用户在第一个网址结果被检索后会多次点击该按钮。
那么我将如何使用此onClickListener进行此操作?
findIT.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
item = game.getText().toString();
getUserPreference();
itemLookup.loadUrl(url);
}
});
答案 0 :(得分:2)
您仍然可以使用AsyncTask<>
,每次都必须创建一个新的。
public void onClick(View v) {
new DoWhateverTask().execute();
}
否则你可以使用Handler
自己做。假设您已经为UI和工作线程定义了Handler
:
public void onClick(View v) {
showProgress();
workerThreadHandler.Post(new Runnable() {
public void run() {
doNetworkStuff(); // Which will post progress to the UI thread if needed.
mainThreadHandler.Post(new Runnable() {
public void run() {
hideProgress();
}
});
}
});
}
就个人而言,我认为AsyncTask是一个更好的解决方案。