12

क्या फैब्रिक किट को आलसी शुरू करना संभव है? उदाहरण के लिए, अभी मैं क्या:फैब्रिक किट की आलसी शुरुआत?

Fabric.with(this, crashlytics, twitterCore, tweetUi); // 500ms 

मैं नीचे की तरह केवल Crashlytics (कोई चहचहाना सामान) को प्रारंभ करना चाहते हैं, क्योंकि यह 10x तेजी से होता है, और मैं ट्विटर सामान अभी

की जरूरत नहीं है
Fabric.with(this, crashlytics); // 50ms 

बाद में, जब उपयोगकर्ता उस गतिविधि पर जाता है जहां मुझे ट्विटरकोर & TweetUi की आवश्यकता होती है, तो मैं उन्हें उपयोग करने से पहले फ्लाईक पर फैब्रिक में जोड़ना चाहता हूं।

क्या यह संभव है?

संपादित करें:मैं इसे प्रतिबिंब के साथ करने में कामयाब रहा, जो स्पष्ट रूप से आदर्श नहीं है, लेकिन यह समय के लिए काम करता है। मैं अभी भी इसके लिए एक उचित समाधान की तलाश में हूं। यहाँ कैसे मैंने किया है:

try { 
     final Fabric newFabric = (new Fabric.Builder(context)).kits(crashlytics, twitterCore, tweetUi).build(); 
     final Method method = Fabric.class.getDeclaredMethod("setFabric", Fabric.class); 
     method.setAccessible(true); 
     method.invoke(null, newFabric); 
    } catch (Exception e) { 
     Timber.e(e, e.getMessage()); 
    } 

उत्तर

0

माइक ?:। वर्तमान में, हम केवल फैब्रिक के पहले प्रारंभिक सम्मान का सम्मान करते हैं। एक विकल्प सामने सबकुछ शुरू करना होगा या यदि आप कुछ क्रैश खोने के लिए ठीक हैं, तो बाद में अपने ऐप के कोड में ट्विटर और क्रैशलिटिक्स को प्रारंभ न करें।

+0

धन्यवाद! दुर्भाग्य से उन आदर्शों में से कोई भी नहीं। क्या कोई मौका है कि हम कम से कम ट्विटर प्रारंभिकता को तेजी से बना सकते हैं? मुझे नहीं पता कि यह क्या कर रहा है, लेकिन 450 एमएमएस (गैलेक्सी एस 7 पर), यह बहुत गहन है। – zrgiu

+0

चूंकि किसी भी धीमी गति से समय के लिए Google द्वारा फैब्रिक अधिग्रहण किया गया है, इसलिए मैं https://twittercommunity.com/c/publisher पर पोस्ट करने की अनुशंसा करता हूं क्योंकि ट्विटर टीम मॉनीटर करता है कि इसके एसडीके पर किसी भी प्रश्न के लिए। –

3

आप initialisation के लिए बिल्डर पैटर्न का उपयोग कर सकते हैं और डिबग मोड में क्रैश रिपोर्टिंग अक्षम कर सकते हैं:

CrashlyticsCore core = 
    new CrashlyticsCore.Builder().disabled(BuildConfig.DEBUG).build(); 
Fabric.with(this, new Crashlytics.Builder().core(core).build(), new Crashlytics()); 

अद्यतन 1: अधिक किट बाद में या लेज़ी प्रारंभ करें फैब्रिक की किट कपड़ा यहां से

CrashlyticsCore core = 
    new CrashlyticsCore.Builder().disabled(BuildConfig.DEBUG).build(); 
//Store the below fabric as an instance member 
Fabric fabric = Fabric.with(this, new Crashlytics.Builder().core(core).build(), new Crashlytics 
    ()); 
//To add later: 
fabric.getKits().add(YOUR_NEW_KIT); 
+0

कि दूसरे पैरामीटर, नाम * क्रैशलीटिक्स *, इस तरह से बनाया गया था। किसी भी तरह से - यह वास्तव में कोई फर्क नहीं पड़ता, क्योंकि आपके उदाहरण के साथ भी यह स्पष्ट नहीं है: आप बाद में फैब्रिक में अन्य किट कैसे शुरू करते हैं और जोड़ते हैं? – zrgiu

+0

आपके संपादन के बारे में टिप्पणी: यदि आप कोशिश करते हैं तो आप देखेंगे कि यह वास्तव में काम नहीं करता है। fabric.getKits() एक संग्रह देता है जो अपवाद फेंकता है यदि आप इसे जोड़ने का प्रयास करते हैं। – zrgiu

+0

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

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