/ / मान के सही होने तक प्रतीक्षा करें - Android, जीपीएस, स्थान, प्रतीक्षा, Android- स्थान

मान को सही पर सेट करने के लिए प्रतीक्षा करें - Android, जीपीएस, स्थान, प्रतीक्षा, Android-स्थान

मैं चाहता हूं कि मेरा कोड mGPS.GotLocaton के लिए प्रतीक्षा करने के लिए सही हो (सेट जब OnLocationChanged घटना निकाल दी जाती है)

public class GPSManager  {
Context MyContext;
boolean GotLocation = false;
Location CurrentLocation;
LocationManager locationManager;

LocationListener locationlistener = new LocationListener() {
public void onLocationChanged(Location location) {
// Called when a new location is found by the network location provider.
GotLocation = true;
locationManager.removeUpdates(locationlistener);
}

public void onStatusChanged(String provider, int status, Bundle extras) {}

public void onProviderEnabled(String provider) {}

public void onProviderDisabled(String provider) {}
};

public GPSManager(Context context){
this.MyContext = context;
locationManager = (LocationManager) MyContext.getSystemService(Context.LOCATION_SERVICE);
}

public void GetCurrentLocation(){
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationlistener);
GotLocation = false;
}
}

द्वारा बुलाया जाता है:

    myGPS.GetCurrentLocation();
do{
}while (!myGPS.GotLocation);

लेकिन यह मुझे इंतजार नहीं कर रहा है - मुझे क्या याद आ रही है।

उत्तर:

उत्तर № 1 के लिए 1

संभवतः becuase आपको पहले ही स्थान जोड़ने पर तुरंत प्रतिक्रिया मिल गई है LocationListener.

हालांकि वहाँ कुछ अजीब कोड है। इसके बजाय कॉलबैक का उपयोग करने पर विचार करें।

स्थान सामग्री के बारे में अधिक जानकारी के लिए इस Android डेवलपर ब्लॉग प्रविष्टि को देखें:

http://android-developers.blogspot.co.uk/2011/06/deep-dive-into-location.html

या इससे भी बेहतर, इस पुस्तकालय का उपयोग करें जो आपके लिए यह सब हल करता है:

http://code.google.com/p/little-fluffy-location-library/


जवाब के लिए 0 № 2

लोकेशन पाने के लिए आप किस धागे में लूप कहते हैं?

यदि यह मुख्य धागे में है, तो यह बहुत गलत है,चूँकि लोकललिस्ट केवल घटनाओं को इस धागे पर चलाता है, लेकिन चूँकि यह धागा लूप में है, इसलिए यह कभी नहीं मिलेगा, इसलिए आप एक अनंत लूप में हैं, जो लगभग 5 सेकंड या तो एएनआर का कारण बनता है।

जिस तरह से लोकलिस्ट काम करता है वह उपयोग करके हैपर्यवेक्षक डिजाइन पैटर्न - जब यह आपको देने के लिए कुछ है, तो यह होगा। आप बस इसे बार-बार पूछ सकते हैं। केवल एक ही चीज जिसका आप उपयोग कर सकते हैं वह है अंतिम स्थान जिसे वह उपयोग कर रहा है getLastKnownLocation .