我对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),则该应用程序正常运行。
如果有人能帮助我,我将非常感激。我已经坚持了一段时间了。
答案 0 :(得分:2)
您可能在此代码之前从其他活动或服务执行了一些数据库操作。
任何数据库操作都会使用默认设置setPersistanceEnabled(true)和setTimestampsInSnapshotsEnabled(false)初始化Firestore。当您随后设置相同的设置时,它可以正常工作。当您尝试更改设置时,它将引发异常。
在我的情况下,设置是在main活动中设置的,但是当通过快捷方式调用其他活动并执行DB操作时,在此之后启动main活动会导致异常。