我有一个功能,它可以完成所需的时间不同。我想在此功能运行时显示进度对话框。Android SDK - 在后台运行功能
我知道你可以使用'线程'来实现这一点。有人可以指导我做正确的方向吗?
编辑: 这里是我使用的代码:
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
这是我用过的方法,虽然进度对话框在我的应用中的功能完成后仍然显示出来? – Jamie 2011-03-02 15:14:36
@Jamie:发布您的源代码并编辑您的问题。很难说出为什么你的对话没有源代码就没有出现。 – Wroclai 2011-03-02 15:15:50
基本上,当用户选择一个菜单选项时,应用程序执行AsyncTask,然后该功能开始做它的东西 - 应用程序锁定,而这个任务正在完成,然后继续进行,其中对话框弹出并立即昏暗 – Jamie 2011-03-02 15:45:53