【发布时间】:2013-07-14 08:41:16
【问题描述】:
我正在使用此示例开发基于位置的应用程序:http://www.androidhive.info/2012/07/android-gps-location-manager-tutorial/
但是当我打开手机时,该位置在那个时刻不可用。所以我想在等待位置时显示进度对话框。想在后台使用 AsyncTask 执行此操作。
您能否提供任何想法如何以及在何处执行此操作?
【问题讨论】:
我正在使用此示例开发基于位置的应用程序:http://www.androidhive.info/2012/07/android-gps-location-manager-tutorial/
但是当我打开手机时,该位置在那个时刻不可用。所以我想在等待位置时显示进度对话框。想在后台使用 AsyncTask 执行此操作。
您能否提供任何想法如何以及在何处执行此操作?
【问题讨论】:
不需要AsyncTask,因为Location服务已经在不同的进程中运行,只需实现LocationListener并在resume方法上注册它,在onCreateActivity中检查location是否为null,显示ProgressDialog,在@ 987654323@设置位置并关闭ProgressDialog
【讨论】:
实现 locationListner 接口并启动您的等待对话框覆盖 onlocation 更改方法,然后取消对话框,一切顺利。
公共类 MainActivity 扩展 Activity 实现 LocationListener{
ProgressDialog dialog;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//-------------------- Start your GPS Reading ------------------ //
dialog = new ProgressDialog(this);
dialog.setMessage("Please wait!");
dialog.show();
}
@Override
public void onLocationChanged(Location arg0) {
dialog.dismiss();
}
@Override
public void onProviderDisabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onProviderEnabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
// TODO Auto-generated method stub
}
【讨论】:
将 ProgressDialog 放在 onPreExecute 中,示例代码如下:
private ProgressDialog progressdialog;
@Override
protected void onPreExecute(){
super.onPreExecute();
progressdialog = new ProgressDialog(yourContext);
progressdialog.setMessage("Loading...");
progressdialog.show();
}
@Override
protected void onPostExecute(){
super.onPostExecute();
progressdialog.dismiss();
}
【讨论】: