当用户更改首选项时如何在运行时禁用 Crashlytics/Fabric
Posted
技术标签:
【中文标题】当用户更改首选项时如何在运行时禁用 Crashlytics/Fabric【英文标题】:How to Disable Crashlytics/Fabric at Runtime when User Changes Preferences 【发布时间】:2015-08-23 16:15:08 【问题描述】:我正在使用 com.crashlytics.sdk.android:crashlytics:2.3.2@aar
版本的 crashlytics,如果用户选择退出,我会禁用崩溃报告。
我尝试了this 解决方案,但仍然无法正常工作,崩溃报告仍在发送到 Fabric。
我这样做是:
Preference errorReportingEnabled = findPreference(MatlistanPrefs.BUGREPORTS_SEND_AUTOMATICALLY);
errorReportingEnabled.setOnPreferenceChangeListener(new OnPreferenceChangeListener()
@Override
public boolean onPreferenceChange(Preference preference, Object newValue)
Boolean value = (Boolean) newValue;
Fabric.with(DataCollectionSettingsActivity.this, new Crashlytics.Builder().
core(new CrashlyticsCore.Builder().disabled(!value).build())
.build());
return true;
);
这个问题有什么可行的解决方案吗?
谢谢。
【问题讨论】:
【参考方案1】:Fabric 在初始化时创建一个单例实例,并在您调用Fabric.with(...)
时返回相同的实例。因此,onPreferenceChange
中的代码对 Fabric 类没有影响。
如果库本身提供启用或禁用崩溃分析的方法,则此问题的唯一解决方案可能是。因此,直到现在 (crashlytics:2.5.2
) 没有解决方案在运行时启用/禁用 crashlytics。你必须在启动时这样做:
Fabric.with(this, new Crashlytics.Builder()
.core(new CrashlyticsCore.Builder()
.disabled(true).build()).build());
【讨论】:
以上是关于当用户更改首选项时如何在运行时禁用 Crashlytics/Fabric的主要内容,如果未能解决你的问题,请参考以下文章