2012-04-16 2 views
1

デバイスのgeoloc(緯度/経度)でロケーションオブジェクトを作成してロードした後、固定ランドマークの距離を表示するデータアダプタにバインドされたListViewがあります。問題は、平均して、以下のコードがロードするのに3〜7秒かかります。長いプロセスでは、「requestLocationUpdates()」という呼び出しがあります。NETWORK_SERVICEがなく、GPS_SERVICEがプライマリになると、アクティビティリストブランクActivityManagerのOnCreate()でlocationManager.requestLocationUpdates()を呼び出す必要がありますか?

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

locationManager =(LocationManager)getSystemService(Context.LOCATION_SERVICE); locationListener = new 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); 

答えて

1

使用getLastKnownLocationその後、requestLocationUpdatesを呼び出す空のリストが表示されないようするために、リストビューで、最新の既知の位置を表示する最初、私はのonCreateメソッドでそれを呼び出すreagrdingあらゆる問題を見ることができません。

+1

あなたは正しいが..私は助けを保留この記事に走った:「あなたは、すべての利用可能な位置プロバイダを気にしますが、単に最良のものが利用可能に取得したくない場合がありますこれを行うために、我々はを指定します。たとえば、高度とベアリング、費用などが必要ですか? 現在、特定のプロバイダの最新の場所をロケーションマネージャに問い合わせることができます。最後の場所は、更新が来るのを待っている。 http://marakana.com/forums/android/examples/42.html – CampbellGolf

2

hereを読んでください。彼らはあなたを最も良く助けるべきです。

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

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

また、あなたがonLocationChanged(Location location)

0

で位置を取得するまで、あなたはいけない代わりに、あなたのリストのスピナーを表示することができます。また、GPSはあなたが最後の既知の位置を使用することができます修正スピードアップする

あなたのリストビューを埋めるために場所の更新に依存します。 .getLastKnownLocation()に電話して最後に知られている場所を取得し、アプリがより正確な場所をリクエストしていることを示すインジケータを表示してください。

読むA deep dive into location

+0

Mahdiがあなたを打ち負かすのですが、どちらも正しいですし、私はコードソリューションに関する彼の反応についてコメントしました。助けてくれてありがとう! – CampbellGolf

関連する問題