Firebase Remoteconfig fetch崩溃了Android应用

时间:2016-12-28 09:22:43

标签: android firebase firebase-remote-config

如标题所示。获取Firebase配置会导致应用崩溃。在同一个应用程序中,Firebase数据库和崩溃报告工作正常。

错误消息:

Caused by: java.lang.IllegalStateException: Activity has been destroyed
                  at android.support.v4.app.FragmentManagerImpl.enqueueAction(FragmentManager.java:1854)
                  at android.support.v4.app.BackStackRecord.commitInternal(BackStackRecord.java:643)
                  at android.support.v4.app.BackStackRecord.commitAllowingStateLoss(BackStackRecord.java:608)
                  at com.google.android.gms.internal.zzrn.zza(Unknown Source)
                  at com.google.android.gms.internal.zzra.zzc(Unknown Source)
                  at com.google.android.gms.internal.zzra.zzs(Unknown Source)
                  at com.google.android.gms.tasks.zzh$zza.zzv(Unknown Source)
                  at com.google.android.gms.tasks.zzh.addOnCompleteListener(Unknown Source)
                  at com.foo.foo.Common.DatabaseManager.getRemoteConfig(DatabaseManager.java:85)
                  at

我不明白将要发生什么。相关代码:

private void getRemoteConfig() {
    remoteConfig = FirebaseRemoteConfig.getInstance();
    FirebaseRemoteConfigSettings configSettings = new FirebaseRemoteConfigSettings.Builder()
            .setDeveloperModeEnabled(BuildConfig.DEBUG)
            .build();
    remoteConfig.setConfigSettings(configSettings);
    remoteConfig.setDefaults(R.xml.remote_config_defaults);
    long cacheExpiration = 3600;

    //expire the cache immediately for development mode.
    if (remoteConfig.getInfo().getConfigSettings().isDeveloperModeEnabled()) {
        cacheExpiration = 0;
    }

    remoteConfig.fetch(cacheExpiration).addOnCompleteListener(this, new OnCompleteListener<Void>() {
        @Override
        public void onComplete(@NonNull Task<Void> task) {
            if (task.isSuccessful()) {
                remoteConfig.activateFetched();
            }
            //LocalBroadcastManager.getInstance(null).sendBroadcast(new Intent(AppConstants.kNotificationonRemoteSettingsLoaded));*/
        }


    });
}

Graddle:

compile 'com.google.firebase:firebase-core:9.6.1'
compile 'com.google.firebase:firebase-auth:9.6.1'
compile 'com.google.firebase:firebase-database:9.6.1'
compile 'com.google.firebase:firebase-storage:9.6.1'
compile 'com.google.firebase:firebase-config:9.6.1'
compile 'com.google.firebase:firebase-crash:9.6.1'
compile 'com.google.firebase:firebase-messaging:9.6.1'
compile 'com.android.support:appcompat-v7:25+'
compile 'com.google.android.gms:play-services-maps:9.6.1'

apply plugin: 'com.google.gms.google-services'

2 个答案:

答案 0 :(得分:2)

我遇到了同样的问题。问题是我在Super.oncreate()之前使用了firebase远程配置提取。检查您调用getRemoteConfig()程序的位置!

答案 1 :(得分:0)

我在我的应用中使用Remote Config Firebase时发现此问题。

我想说使用远程配置从firebase获取数据时,数据会覆盖应用程序中的数据。如果发送的数据不好,则先前存在的数据会被覆盖,然后崩溃应用程序。 如果它在Firebase上更改为无错误,则应用程序将无法加载Firebase Remote配置以修复错误,这就是为什么如果清除该应用程序的缓存大多数情况,它将再次起作用。

我认为他们应该引入一段等待时间来处理远程错误或后退中的崩溃,以避免应用程序崩溃。