1

デバイスの geoloc (緯度/経度) を使用して位置オブジェクトを作成およびロードした後、固定ランドマークの距離を表示するデータ アダプターにバインドされた ListView があります。問題は、平均して、以下のコードの読み込みに 3 ~ 7 秒かかることです。より長いプロセスは、「requestLocationUpdates()」の呼び出しであり、NETWORK_SERVICE がなく、GPS_SERVICE がプライマリになると、読み込みに数分かかることがあります。活動リストビューの空白

OnCreate() アクティビティ メソッドは、requestLocationUpdates() を呼び出すのに最適な場所ですか?

locationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE); locationListener = 新しい GeoLocationListener();

    Criteria criteria = new Criteria();
    criteria.setAccuracy(Criteria.ACCURACY_FINE);
    criteria.setAltitudeRequired(false);
    criteria.setBearingRequired(false);
    criteria.setCostAllowed(false);
    criteria.setSpeedRequired(false);
    criteria.setPowerRequirement(Criteria.POWER_LOW);

    String provider = locationManager.getBestProvider(criteria, true);        

    locationManager.requestLocationUpdates(provider,
        0, //300000, // TODO: Default to Check Every 5 Minutes OR
            0, //500,   // TODO: Default to Check if device moves more than 500 meters
            locationListener); 
4

3 に答える 3

2

ここで答えを読んでください。彼らはあなたに最も役立つはずです。

私はにrequestLocationUpdates()入れます。このようにして、アプリはアクティブでないときに更新された場所を停止します。常にgpsが必要な場合は、requestLocationUpdatesをonCreate()に入れても問題ありません。onResume()removeUpdates(this);onPause()

また、GPS修正を高速化するために、最後に知っている場所を使用できます。

    mLocationProvider = mLocationManager.getBestProvider(new Criteria(), false);
    Location location = mLocationManager.getLastKnownLocation(mLocationProvider);

さらに、次の場所を取得するまで、リストの代わりにスピナーを表示できます。 onLocationChanged(Location location)

于 2012-04-16T18:25:40.390 に答える
1

最初にgetLastKnownLocationを使用してリスト ビューに最新の既知の場所を表示し、空のリストが表示されないようにしてから、requestLocationUpdates を呼び出します。onCreate メソッドで呼び出しても問題はありません。

于 2012-04-16T18:23:28.443 に答える
0

リストビューを埋めるために場所の更新に依存するべきではありません。呼び出して最新の既知の場所を取得して.getLastKnownLocation()から、アプリがより正確な場所を要求するのに忙しいことを示すインジケーターを表示してみてください。

ロケーションの詳細を読む

于 2012-04-16T18:33:33.737 に答える