我有一个函数,它的完成时间可能会有所不同。我想在此功能运行时显示一个进度对话框。
我知道您可以使用“线程”来实现此目的。有人可以指出我这样做的正确方向吗?
编辑: 这是我正在使用的代码:
private class LongOperation extends AsyncTask<String, Void, String>
{
ProgressDialog dialog;
public Context context;
@Override
protected String doInBackground(String... params) {
if (!dialog.isShowing())
dialog.show(); // Just in case
return null;
}
/* (non-Javadoc)
* @see android.os.AsyncTask#onPostExecute(java.lang.Object)
*/
@Override
protected void onPostExecute(String result) {
dialog.dismiss();
}
/* (non-Javadoc)
* @see android.os.AsyncTask#onPreExecute()
*/
@Override
protected void onPreExecute()
{
dialog = ProgressDialog.show(context, "Working", "Getting amenity information", true);
}
/* (non-Javadoc)
* @see android.os.AsyncTask#onProgressUpdate(Progress[])
*/
@Override
protected void onProgressUpdate(Void... values) {
// Things to be done while execution of long running operation is in progress. For example updating ProgessDialog
}
}
这是 Asnyc 类。用户从菜单中选择一个选项,然后执行:
longOperation.execute(""); // Start Async Task
GetAmenities(Trails.UserLocation); // Long function operation
最佳答案
您应该为此目的使用 AsyncTask
。参见 Android developers website和 How to use AsyncTask .
一些示例代码:
private class LongRunningTask extends AsyncTask<Void, Boolean, Boolean> {
private ProgressDialog progress;
protected void onPreExecute() {
progress = ProgressDialog.show(yourContext, "Title", "Text");
}
@Override
protected Boolean doInBackground(Void... params) {
return true;
}
protected void onPostExecute(Boolean result) {
if(result) {
progress.dismiss();
}
}
}
关于java - Android SDK - 在后台运行功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5168748/