我希望在方法结束之前更改首选项活动的可视化,以显示消息或进度条。
buttonSave.setOnPreferenceClickListener(new OnPreferenceClickListener() {
public boolean onPreferenceClick(Preference preference) {
buttonSave.setTitle(getString(R.string.loadingWait));//visualization to change before the next function ends
back();//this function takes a long time
// buttonSave.setTitle(getString(R.string.bSave));
return true;
}
});
我该怎么做?其他可能性是显示进度条,但我可以在函数back()结束之前显示它。
非常感谢提前
答案 0 :(得分:0)
您应该查看AsyncTask(http://developer.android.com/reference/android/os/AsyncTask.html)
doInBackground
中的任何内容都将在一个单独的线程上执行,而所有其他方法(如onProgressUpdate
)都可以操作UI,因为它再次位于UI线程上。
所以你可以这样做:
new AsyncTask<Void, Void, Boolean>() {
@Override
protected void onPreExecute() {
buttonSave.setTitle(getString(R.string.loadingWait));
}
@Override
protected Boolean doInBackground(Void... params) {
back();
}
@Override
protected void onProgressUpdate(Void... values) {
//Show any progress
}
@Override
protected void onPostExecute(Boolean success) {
//Anything necessary when the background task is done
};
}.execute();