Android在等待位置时显示进度对话框

时间:2013-07-16 08:46:01

标签: android android-location

我正在使用此示例开发基于位置的应用:http://www.androidhive.info/2012/07/android-gps-location-manager-tutorial/

但是当我打开手机时,该位置暂时无法使用。所以我想在等待位置时显示进度对话框。希望使用AsyncTask在后台执行此操作。

你能否提出任何想法?如何以及在何处做到这一点?

4 个答案:

答案 0 :(得分:4)

不需要AsyncTask,因为Location服务已经在不同的进程中运行,只需实现LocationListener并在resume方法上注册它,并在onCreateActivity中检查location是否为null,显示ProgressDialog ,并在onLocationChanged()中设置位置并关闭ProgressDialog

答案 1 :(得分:2)

将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();
}

答案 2 :(得分:2)

实现locationListner接口并启动等待对话框覆盖onlocation change方法,只需取消对话框就可以了。

公共类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

}

答案 3 :(得分:1)

我在AsyncTask中编写了一个使用ProgressDialog的解决方案,主题如下:

Displaying a ProgressDialog while waiting for a joined Thread