2016-02-28 9 views
9

तत्काल रन कॉन्फ़िगर करने के बाद, रन बटन में एक छोटा पीला थंडरबॉल्ट होता है। लेकिन जब मैं ऐप चलाता हूं, तो एंड्रॉइड स्टूडियो ने अभी भी एक पूर्ण बिल्ड & इंस्टॉल किया है, पूरा संदेश है तस्वीर में सूचीबद्ध है।तत्काल रन "एकाधिक प्रक्रिया" के कारण काम नहीं करता है

मैंने http://tools.android.com/tech-docs/instant-run में आधिकारिक दस्तावेजों की खोज की है, लेकिन "एकाधिक प्रक्रिया" के बारे में कुछ भी नहीं था। मुझे आश्चर्य है कि "एकाधिक प्रक्रियाओं" का मतलब संकलन या मेरा एंड्रॉइड ऐप है।

एकाधिक प्रक्रियाओं को बंद करने और तुरंत चलाने का अनुभव करने के लिए मुझे क्या कॉन्फ़िगर करना चाहिए?

उत्तर

9

त्वरित भागो, क्योंकि यह कई प्रक्रियाओं उपयोग कर रहा है अपने अनुप्रयोग के लिए सक्षम नहीं है।

एंड्रॉयड उपकरण परियोजना स्थल (http://tools.android.com/recent/androidstudio20beta6availableinthecanarychannel) में बताया गया है:

"एप्लिकेशन जो कई प्रक्रियाओं का उपयोग कर रहे थे। (एंड्रॉयड के माध्यम से: प्रकट में प्रक्रिया) त्वरित रन के साथ ठीक से अद्यतन नहीं किया जा रहा था कुछ समय के लिए, हमने इस तरह के परिदृश्य में इंस्टेंट रन को बंद कर दिया है। "

इसलिए, तत्काल रन का अनुभव करने के लिए, आपको यह सुनिश्चित करना होगा कि आपका ऐप एकाधिक प्रक्रियाओं का उपयोग नहीं कर रहा है। इसके लिए अपने AndroidManifest.xml की जांच करें।

ऐसा हो सकता है कि एकाधिक प्रक्रिया उपयोग आयातित लाइब्रेरी से आता है। उदाहरण के लिए, लीक कैनरी, अपने स्वयं के AndroidManifest.xml में परिभाषित कई प्रक्रियाओं का उपयोग करता है। यह कहां परिभाषित किया गया है यह जानने का सबसे अच्छा तरीका है "एंड्रॉइड: प्रोसेस" के लिए अपनी पूरी परियोजना (ओएस एक्स पर एंड्रॉइड स्टूडियो में सीएमडी-शिफ्ट-एफ) को खोजना।

+3

मैं अपने ऐप से LeakCanary और ProcessPhoenix निकालने के लिए इस के आसपास पाने के लिए की जरूरत । वे अपराधी थे। साथ ही, यह ध्यान देने योग्य है कि मुझे बताया गया है कि यह तय है और एएस 2.0.0-बीटा 7 में जारी किया जाएगा। – loeschg

+0

अच्छा काम! अपडेट के लिए धन्यवाद, अगर यह अगली रिलीज में तय हो जाता है तो अच्छा होगा। – Jannik

+0

देर से देर होने के लिए खेद है। मेरा बाद का निष्कर्ष आपके उत्तर के समान है। धन्यवाद ~ – futureer

3

ProcessPhoenix चलाते समय मैं इस समस्या में भाग गया। इसे पूरी तरह से अक्षम करने के बजाय, मैंने इसे अपने डीबग बिल्ड के लिए अक्षम कर दिया।

compile के बजाय मैं उपयोग
releaseCompile 'com.jakewharton:process-phoenix:2.0.0'

और निर्माण मैं प्रतिबिंब का उपयोग आवेदन प्रक्रिया पुनः आरंभ करने को गति प्रदान करने के लिए नहीं तोड़: तो अब

try { 
    Class clazz = Class.forName("com.jakewharton.processphoenix.ProcessPhoenix"); 
    Method triggerRebirthMethod = clazz.getMethod("triggerRebirth", Context.class); 
    triggerRebirthMethod.invoke(this, new Object[]{getActivity()}); 
} catch (Exception e) { 
    // Exception handling 
} 

मैं अभी भी त्वरित रन का उपयोग करें और रख सकते lib शामिल थे। :)

(बेशक, प्रतिबिंब कभी नहीं आदर्श है, लेकिन एप्लिकेशन प्रक्रिया पुनः आरंभ केवल अनुप्रयोग में एक दुर्लभ विशेष मामले में प्रयोग किया जाता है।)

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

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