Android 使用邮箱重置密码,发送向指定邮箱发送邮件后应用直接无响应

private void Query(String username, String userword, String identity) {
    AVQuery<AVUser> query = AVUser.getQuery();
    query.whereEqualTo("username", username);
    query.whereEqualTo("email", userword);
    query.whereEqualTo("identity", identity);
    query.findInBackground().subscribe(new Observer<List<AVUser>>() {
        @Override
        public void onSubscribe(@NonNull Disposable d) {
        }

        @Override
        public void onNext(@NonNull List<AVUser> avUsers) {
            Log.e(TAG, "onNext: " + avUsers.size());
            if (avUsers.size() == 1) {
                //发送重置邮件
                AVUser.requestPasswordResetInBackground(userword).blockingSubscribe();

                Toast.makeText(LoginForgetActivity.this, "重置密码邮件已发往您的邮箱,请前往查收!", Toast.LENGTH_SHORT).show();
                startActivity(new Intent(LoginForgetActivity.this, LoginActivity.class));
                finish();
                Log.e(TAG, "重置密码成功");
            } else {
                etLoginForgetUserword.setText("");
                etLoginForgetUsername.setText("");
                rbForgetAuthor.setChecked(false);
                rbForgetReaders.setChecked(false);
                etLoginForgetUsername.requestFocus();
                Toast.makeText(LoginForgetActivity.this, "查询不到相关用户,请重新填写信息!", Toast.LENGTH_SHORT).show();
                Log.e(TAG, "查询不到用户");
            }
        }

        @Override
        public void onError(@NonNull Throwable e) {
            Log.e(TAG, "查询出错:" + e.getMessage());
        }

        @Override
        public void onComplete() {
        }
    });
}

邮件确实是发送出来了


但它又确实是无响应了

只要把重置邮件的那行注释掉就不会出错
有遇到过解决了的大佬么,救救啊

另外Logcat没有报错

.blockingSubscribe 会阻塞操作,需要改成非阻塞的写法。Android SDK 基于 RxJava 风格编写,您可以先大概了解下 RxJava 的基本概念。

谢谢兄弟,这行代码是根据开发文档里来写的


由于我的英语基础不是很好,所以,没有看出方法名里的blocking(阻塞)单词。
只要把blickingSubscribe换成subscribe,就不会无响应了。

最后还是要谢谢兄弟了。

文档里有些地方为了节约篇幅用了 blockingSubscribe() 的写法,可能还是改成非阻塞的写法比较好。感谢反馈意见。