![](/img/trans.png)
[英]Fabric Twitter/Fabric Crashlytics- How to add multiple Kits
[英]Lazy initialization of Fabric kits?
是否有可能懶洋洋地初始化Fabric Kits? 例如,我現在做:
Fabric.with(this, crashlytics, twitterCore, tweetUi); // 500ms
我想初始化只有Crashlytics(沒有Twitter的東西),如下所示,因為它快了10倍,我不需要馬上的Twitter東西
Fabric.with(this, crashlytics); // 50ms
稍后,當用戶訪問我需要TwitterCore和TweetUi的活動時,我想在使用之前將它們添加到Fabric中。
這可能嗎 ?
編輯: 我設法用反射來做,這顯然不是理想的,但它暫時有效。 我仍然在尋找一個合適的解決方案。 我是這樣做的:
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());
}
您可以使用構建器模式進行初始化,並可以在調試模式下禁用崩潰報告:
CrashlyticsCore core =
new CrashlyticsCore.Builder().disabled(BuildConfig.DEBUG).build();
Fabric.with(this, new Crashlytics.Builder().core(core).build(), new Crashlytics());
更新1:之后添加更多工具包或者Fabric工具包的延遲初始化?:
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);
來自Fabric的Mike來自這里。 目前,我們只尊重Fabric的第一次初始化。 一種選擇是在前面初始化所有內容,或者如果你可以錯過一些崩潰,不要初始化Twitter和Crashlytics,直到稍后在你的應用程序代碼中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.