繁体   English   中英

懒惰初始化Fabric套件?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM