6

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

但是当我打开手机时,那个位置当时不可用。所以我想在等待位置时显示进度对话框。想在后台使用 AsyncTask 执行此操作。

你能给出任何想法如何以及在哪里做到这一点?

4

3 回答 3

4

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

于 2013-07-16T08:50:41.007 回答
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();
}
于 2013-07-16T08:51:00.000 回答
2

实现 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

}
于 2013-07-16T10:06:44.583 回答