2012-09-18 10 views
5

कई कोर के साथ एंड्रॉयड फोन की उपलब्धता, कैसे आवेदन डेवलपर्स यह सुनिश्चित करें कि उनके आवेदन उन कोर के अतिरिक्त संसाधन शक्ति का उपयोग करता है बना सकते हैं के साथ के लिए एंड्रॉयड क्षुधा अनुकूल कैसे करें। जो मैं समझता हूं, ऐप डेवलपर्स केवल एक ही चीज कर सकता है जो उनके एप्लिकेशन को बहु-थ्रेडेड बनाता है और एंड्रॉइड कर्नेल को अलग-अलग कोरों पर कार्यों को प्रस्तुत करने की देखभाल करने देता है।कई कोर

मैं यदि ऐसा कुछ हो कि कई cores.Also के लिए अनुकूलन करने के लिए किया जा सकता है जानना चाहूंगा, एंड्रॉयड में सबसे अच्छा बहु सूत्रण प्रथाओं क्या कर रहे हैं।

+2

मेरे सबसे सलाह एक अलग थ्रेड पर किया जाना चाहिए: * नहीं * .. * छोड़कर * कर जहां बनता है फिट समस्या अच्छी तरह से * और * एक मापनीय लाभ है। सही होना मुश्किल है, और कई चीजें (जैसे यूआई) आंतरिक रूप से * नहीं * सुरक्षित रूप से थ्रेड हो सकती हैं। (यूआई कार्यों कि पृष्ठभूमि प्रसंस्करण यह आम तौर पर "पृष्ठभूमि श्रमिकों" का उपयोग करना अधिक आसान है की आवश्यकता होती है, [AsyncTask] (http://developer.android.com/reference/android/os/AsyncTask.html) सीधे सहित, धागे के बजाय के लिए।) –

+1

मैं सम्मान असहमत हैं, यह देखते हुए कि एंड्रॉयड एपीआई मदद करने के लिए 'Context' ट्रैकिंग-लीक नरक कम एक लंबा सफर तय किया है कि' synchronized' हमारे दोस्त है, और, अंत में, कि प्रतिमान यहाँ है रहने के लिए। यहां तक ​​कि सरल ऐप्स में (आमतौर पर) अलग-अलग चीजें प्रारंभ करने/लोड करने के लिए ... जानकारी प्रदर्शित करने से पहले होती हैं, इसलिए हमें यह करना चाहिए कि हम इसे "मल्टीकोर बेकार" (उपयोगकर्ता) या "मल्टीकोर कठिन है" (देव) को समाप्त करने के लिए क्या कर सकते हैं। और यूआई थ्रेड अलगाव (धीमी गति के # 1 कारण) की देखभाल के बारे में अधिकांश देवताओं की मानसिकता को बदलने का भी लाभ है। प्वाइंट बहुत सारे फायदे हैं। – davidcesarino

उत्तर

2
इसके बजाय अपने आप को अपने सबसे अच्छे रूप सूत्रण प्रदर्शन करने के लिए कोशिश कर के

ऐसे AsyncTask के रूप में मानदंड में बनाया का उपयोग करें।

यदि आप चाहते हैं

//Sets up a thread pool where NUM_THREADS is the amount that can run at the same time 
ExecutorService threadPool = null; 
threadPool = Executors.newFixedThreadPool(NUM_THREADS); 

//Will execute something on one of the threads queuing if necessary 
threadPool.execute(new Runnable() { 
    @Override 
    public void run() { 

         }}); 

आमतौर पर वेब कॉल और डेटा पार्स multithreading के साथ

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