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

Posted

技术标签:

【中文标题】Android在等待位置时显示进度对话框【英文标题】:Android show progress dialog while waiting for location 【发布时间】:2013-07-14 08:41:16 【问题描述】:

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

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

您能否提供任何想法如何以及在何处执行此操作?

【问题讨论】:

【参考方案1】:

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

【讨论】:

【参考方案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


【讨论】:

【参考方案3】:

将 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 中?因为我想展示这个直到我得到我的位置!当我得到纬度和经度时,我想禁用对话框

以上是关于Android在等待位置时显示进度对话框的主要内容,如果未能解决你的问题,请参考以下文章

Android - 仅在 AsyncTask 未完成时单击按钮时显示进度对话框

无法使用异步等待方法显示进度对话框

运行代码时显示进度对话框的问题

从 firebase 数据库获取数据时显示进度对话框

3.3 进度对话框

在 Android 中显示对话框时显示 AppBar