我正在使用此示例开发基于位置的应用:http://www.androidhive.info/2012/07/android-gps-location-manager-tutorial/
但是当我打开手机时,该位置暂时无法使用。所以我想在等待位置时显示进度对话框。希望使用AsyncTask在后台执行此操作。
你能否提出任何想法?如何以及在何处做到这一点?
答案 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