दिलचस्प पोस्ट
JavaScript में पॉलीलाइन के चारों ओर एक बहुभुज कैसे खींचना है? हेडर का उपयोग करके php के साथ फ़ाइल डाउनलोड करने के लिए बाध्य करें () एंड्रॉइड: ListView की सूची आइटम में बटन के लिए onClick ईवेंट को कैसे सेट करें आईओएस 7 – नेविगेशन नियंत्रक मेरे UIScrollView की सामग्री इन्सटेट और कंटेंटऑफ़सेट सेट कर रहा है कानूनी तौर पर वेब-फोंट का उपयोग कैसे करें? साथ-बयान के साथ उपलब्ध के साथ परिभाषित वैरिएबल? तार की एक सरणी पर jQuery.unique एंड्रॉइड में इस्तेमाल किया SQLite का संस्करण? सी # में यूआरआई स्ट्रिंग से फ़ाइल नाम प्राप्त करें कमान बटटन द्वारा संपूर्ण कार्यपुस्तिका में सभी चेकबॉक्स को अनचेक करें मल्टी प्रसंस्करण और डिल एक साथ क्या कर सकते हैं? सी ++ में एक कंडीशियल या कंट्रोल स्टेटमेंट में एक वैरिएबल को घोषित करना और आरम्भ करना स्काला में एक अभिव्यक्ति के रूप में सुधार (एक एएसटी प्राप्त करें) का उपयोग करने का सबसे आसान तरीका क्या है? लाइब्रेरी (डीएलएल) के लिए 'app.config' के समतुल्य एंड्रॉइड – सूची दृश्य – प्रदर्शन आईटम क्लिक करें

AsyncTask और Looper.prepare () त्रुटि

मेरे पास निम्न कोड है

class OverlayTask extends AsyncTask<Void, Void, Void> { @Override public void onPreExecute() { if (sites != null) { myMapView.getOverlays().remove(sites); myMapView.invalidate(); sites = null; } } @Override public Void doInBackground(Void... unused) { grabShipsWithLocation(); return (null); } @Override public void onPostExecute(Void unused) { myMapView.getOverlays().add(sites); myMapView.invalidate(); isLoading = false; } } 

यह कुछ परीक्षण उपकरणों पर ठीक काम करता है, लेकिन मैं देव कंसोल पर बहुत सी त्रुटियां देख रहा हूं। मुझे यह काम करने में प्रतीत नहीं हो सकता है कि यह Looper.prepare () और कहां रखे क्या इसकी ज़रूरत है?

 java.lang.ExceptionInInitializerError at com.test.appname.FinderMain$1.gotLocation(FinderMain.java:286) at com.test.appname.MyLocation$GetLastLocation.run(MyLocation.java:89) at java.util.Timer$TimerImpl.run(Timer.java:289) Caused by: java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare() at android.os.Handler.<init>(Handler.java:121) at android.os.AsyncTask$InternalHandler.<init>(AsyncTask.java:421) at android.os.AsyncTask$InternalHandler.<init>(AsyncTask.java:421) at android.os.AsyncTask.<clinit>(AsyncTask.java:152) 

के रूप में अनुरोध MyLocation.java

  class GetLastLocation extends TimerTask { @Override public void run() { lm.removeUpdates(locationListenerGps); lm.removeUpdates(locationListenerNetwork); Location net_loc=null, gps_loc=null; if(gps_enabled) gps_loc=lm.getLastKnownLocation(LocationManager.NETWORK_PROVIDER); if(network_enabled) net_loc=lm.getLastKnownLocation(LocationManager.GPS_PROVIDER); //if there are both values use the latest one if(gps_loc!=null && net_loc!=null){ if(gps_loc.getTime()>net_loc.getTime()) locationResult.gotLocation(gps_loc); else locationResult.gotLocation(net_loc); return; } if(gps_loc!=null){ locationResult.gotLocation(gps_loc); //Line 89 return; } if(net_loc!=null){ locationResult.gotLocation(net_loc); return; } locationResult.gotLocation(null); } } 

Solutions Collecting From Web of "AsyncTask और Looper.prepare () त्रुटि"

लम्बी कहानी:

AsyncTask आंतरिक रूप से एक Handler का उपयोग करता है एक हेन्डलर मूल रूप से आप Runnables को थ्रेड पर हैंडलर को सौंपे गए दूसरे धागे से पोस्ट करने की अनुमति देता है, जो कि AsyncTask के मामले में हमेशा वह धागा होता है जहां से इसे कहा जाता है। यह केवल उन थ्रेड्स के लिए काम करता है जिनके पास Looper तैयार है, हालांकि।

अधिक जानकारी के लिए http://developer.android.com/reference/android/os/Handler.html देखें

लघु कथा:

बस प्रत्येक कॉल FinderMain$1.gotLocation या किसी AsyncTask में AsyncTask भीतर AsyncTask के निर्माण को AsyncTask और UI थ्रेड के लिए बाध्य एक Handler पोस्ट करें, जैसे:

 class GetLastLocation extends TimerTask { private Handler mHandler = new Handler(Looper.getMainLooper()); @Override public void run() { // ... mHandler.post(new Runnable() { public void run() { locationResult.gotLocation(null); } }); // ... } } 

मैंने यह कोशिश की … यह काम किया, आशा है कि यह तुम्हारी मदद करेगा ..

 protected class Asyctast extends AsyncTask<String, Integer, Integer> { @Override protected Integer doInBackground(String... params) { // TODO Auto-generated method stub Log.d("Asynctask", ""+params); Looper.prepare(); ImageThumbnailsActivity m = new ImageThumbnailsActivity(); Toast.makeText(ImageThumbnailsActivity.this,""+params ,Toast.LENGTH_SHORT).show(); final Dialog dialog_options = new Dialog(ImageThumbnailsActivity.this); dialog_options.setContentView(R.layout.option); dialog_options.show(); Looper.loop(); return null; } }