2010-10-08 12 views
6

बनाया जा सकता है मुझे एंड्रॉइड लूपर के साथ समस्या है। मेरे पास एक वर्ग है जिसने AsynTask बढ़ाया है। DoInBackground() विधि के अंदर मेरे पास Looper.prepare() और नीचे कुछ कोड है।एंड्रॉइड: केवल एक लूपर प्रति थ्रेड

यह पहली बार अच्छी और अच्छी तरह से चलता है लेकिन इसके बाद यह एक अपवाद देता है "प्रति थ्रेड केवल एक लूपर बनाया जा सकता है"।

Looper.quit() का उपयोग करने के लिए कुछ समाधान लगता है लेकिन मैं इसे लागू करने में असमर्थ हूं।

किसी भी मदद की सराहना की जाएगी।

+1

ऐसा लगता है कि Looper.quit() वह है जो आपको यहां चाहिए था। एंड्रॉइड एपीआई दस्तावेज में, यह स्पष्ट रूप से कहा गया है कि "इस विधि को कॉल करने के बाद लूप() को कॉल करना सुनिश्चित करें, और इसे छोड़कर()" कॉल करके इसे समाप्त करें। – onlygo

+0

"इसका कार्यान्वयन करने में असमर्थ" से आपका क्या मतलब है? – methode

+0

मेरा मतलब है कि मैं लूपर के अंदर छोड़ने() को खोजने में सक्षम नहीं हूं। यह getMainLooper, myLooper(), लूप(), myQueue(), तैयार(), readyMainLooper() तैयार करता है लेकिन छोड़ नहीं()। – viv

उत्तर

0

प्रयास करें ...

Looper.getMainLooper().quit(); 
3
class LooperThread extends Thread { 
     public Handler mHandler; 

     public void run() { 
      Looper.prepare(); 

      mHandler = new Handler() { 
       public void handleMessage(Message msg) { 
        // process incoming messages here 
       } 
      }; 

      Looper.loop(); 
     } 
    } 
0
getActivity().runOnUiThread (new Thread(new Runnable() { 
    public void run() { 
     Looper.myLooper(); 
     getActivity().invalidateOptionsMenu(); 
    } 
})); 
0

बस अनुसरण कर जांच जोड़ें।

if (Looper.myLooper() == null) 
    Looper.prepare(); 
+0

http://stackoverflow.com/questions/23038682/java-lang-runtimeexception-only-one-looper-may-be-created-per-thread/24115631#24115631 –

संबंधित मुद्दे