2013-10-21 7 views
5

से निष्पादित किया गया है तो अपवाद फेंकने के लिए मेरे पास एक वर्ग है जो गंभीर विधियों के साथ है जो SQLite डेटाबेस से डेटा निकालता है। मैं इस वर्ग के उपयोगकर्ताओं को थ्रेड या एसिन्टास्क में इन विधियों को कॉल करने के लिए "मजबूर" करना चाहता हूं।यदि कोई थ्रेड मुख्य थ्रेड

मैं मुख्य धागे पर चलाने के तरीके को कैसे रोक सकता हूं?

मैं एंड्रॉइड.ओ.नेटवर्कऑनमेन थ्रेड अपवाद के समान कुछ हासिल करना चाहता हूं जब आप ui थ्रेड पर कुछ नेटवर्किंग करने का प्रयास करते हैं।

उत्तर

0

अगर आप या नहीं ui धागा में चल रहे हैं

3
if (Looper.getMainLooper().equals(Looper.myLooper())) { 
    throw new MyException("Don't do it on the UI thread"); 
} 

Looper प्रलेखन जाँच करने के लिए इस प्रयास करें यह काम करना चाहिए देखें। बेशक अपना खुद का अपवाद बनाएं या मौजूदा का उपयोग करें।

4

गूगल वॉली पुस्तकालय से:

private void throwIfOnMainThread() { 
     if (Looper.myLooper() == Looper.getMainLooper()) { 
      throw new IllegalStateException("Must not be invoked from the main thread."); 
     } 
    } 
संबंधित मुद्दे