setFirestoreSettings的问题

时间:2018-07-03 14:30:21

标签: android firebase google-cloud-firestore

我对Android和Firestore还是陌生的,还无法弄清楚如何设置Firestore对象的设置。这是我一直在使用的代码:

public class MainActivity extends AppCompatActivity

FirebaseFirestore firestore;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    firestore = FirebaseFirestore.getInstance();
    FirebaseFirestoreSettings settings = new FirebaseFirestoreSettings.Builder().setTimestampsInSnapshotsEnabled(true).build();
    firestore.setFirestoreSettings(settings);

}

但这会导致错误:

java.lang.IllegalStateException: FirebaseFirestore has already been started and its settings can no longer be changed. You can only call setFirestoreSettings() before calling any other methods on a FirebaseFirestore object.

但是,仅当我使用setPersistanceEnabled(false)和/或setTimestampsInSnapshotsEnabled(true)时,才会发生此错误。

如果我使用setPersistanceEnabled(true)和/或setTimestampsInSnapshotsEnabled(false),则该应用程序正常运行。

如果有人能帮助我,我将非常感激。我已经坚持了一段时间了。

1 个答案:

答案 0 :(得分:2)

您可能在此代码之前从其他活动或服务执行了一些数据库操作。

任何数据库操作都会使用默认设置setPersistanceEnabled(true)和setTimestampsInSnapshotsEnabled(false)初始化Firestore。当您随后设置相同的设置时,它可以正常工作。当您尝试更改设置时,它将引发异常。

在我的情况下,设置是在main活动中设置的,但是当通过快捷方式调用其他活动并执行DB操作时,在此之后启动main活动会导致异常。