我正在为我的Android应用程序创建身份验证工作流程.我允许用户使用用户名/密码和各种OAuth提供商登录.我正在验证电子邮件和密码,以便我知道我传递给Firebase的信息是有效的.我正在使用com.google.firebase:firebase-auth:9.6.1
当我执行以下代码时,我得到一个回调,指出操作不成功并出现错误.
mFirebaseAuth.signInWithEmailAndPassword(username,password).addOnCompleteListener(this);
Run Code Online (Sandbox Code Playgroud)
回调函数或完成监听器告诉我
com.google.firebase.FirebaseNetworkException: A network error (such as timeout, interrupted connection or unreachable host) has occurred.
Run Code Online (Sandbox Code Playgroud)
我传递的用户名尚不存在.所以,我会假设看到某种错误说明用户不存在.我传递的内容不正确还是我假设不正确?我还可以看到,在Firebase文档中,iOS库具有所有API方法部分通用的各种错误代码,而Android部分没有显示这一点.其中一个例外是FIRAuthErrorCodeUserNotFound.那么,这个功能甚至存在于Android库中吗?
我有一个在我的活动中创建的领域对象.我需要能够在我创建的服务中访问此对象.但是,我在服务中创建Realm对象时遇到错误
mRealm = Realm.getInstance(getApplicationContext());
Run Code Online (Sandbox Code Playgroud)
java.lang.IllegalStateException:从错误的线程访问Realm.Realm对象只能在创建它们的线程上访问
现在我明白这意味着因为领域对象是在我的活动上创建的,所以我无法从后台线程访问它.但是,除了创建自己的自定义处理程序线程之外,我找不到一个简单的方法,但这似乎是一种笨重的方式.
我在这里遗漏了什么或者是否真的没有更好的方法可以从不同的线程中访问Realm对象?
更新:
我进一步深入研究,在IntentService中,onHandleIntent方法在一个单独的线程中运行,而不是在类中的其他方法.因此,我无法创建类级别的Realm实例,并且能够与onHandleIntent方法的内部和外部进行交互.这就是造成线程异常的原因.除了在每个我需要访问对象的方法创建领域的一个单独的实例和检索它一遍又一遍,我觉得伊利亚特列季亚科夫的回答将是最好的.我可以在构造函数中从域中复制对象,然后在服务的整个生命周期中使用它.任何需要写回Realm对象的方法都需要在该方法中实例化自己的Realm实例.