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

6
我正在开发一个基于位置的应用程序,使用这个示例:http://www.androidhive.info/2012/07/android-gps-location-manager-tutorial/。但是当我打开手机时,位置并不会立即可用。因此,我想在等待位置时显示进度对话框,并希望使用AsyncTask在后台完成。您能提供任何关于如何在哪里做这件事的想法吗?
3个回答

4

由于位置服务已经在不同的进程中运行,所以不需要使用 AsyncTask。只需实现 LocationListener 并在 onResume 方法中注册它,在 onCreateActivity 中检查位置是否为空,如果是,则显示 ProgressDialog,并在 onLocationChanged() 方法中设置位置并关闭 ProgressDialog


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

我应该把这个放在哪里?放在我的MainActivity里吗?因为我想要在获取到我的位置之前显示它!当我获取到纬度和经度后,我想要禁用对话框。 - Karlis

2

实现LocationListener接口并启动等待对话框,覆盖onLocationChange方法,在那里取消对话框,祝一切顺利。

public class MainActivity extends Activity implements 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

}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接