Android 安卓意图未被发送

Android 安卓意图未被发送,android,firebase,android-intent,firebase-authentication,Android,Firebase,Android Intent,Firebase Authentication,我正在我的应用程序中使用firebase auth。我正在检查用户是否按照Firebase文档和Udacity课程中的说明在我的MainActivity上进行了身份验证 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); firebaseAuth

我正在我的应用程序中使用firebase auth。我正在检查用户是否按照Firebase文档和Udacity课程中的说明在我的MainActivity上进行了身份验证

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    firebaseAuth = FirebaseAuth.getInstance();
    final FirebaseUser user = firebaseAuth.getCurrentUser();
    if (user == null){
        loadLogIn();
    }
    authListener = new FirebaseAuth.AuthStateListener() {
        @Override
        public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
            if (user == null){
                loadLogIn();
            }
        }
    };

private void loadLogIn(){
    Intent intent = new Intent(MainActivity.this, LoginActivity.class);
    //Flags prevent user from returning to MainActivity when pressing back button
    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
    startActivity(intent);
}
当我使用调试器逐步完成代码时,一切正常,用户为null,因此调用loadLogIn方法,该方法发送意图,但登录活动从未打开,我得到一个崩溃,因为它一直在执行需要对用户进行身份验证的代码。如果从未调用我的登录活动,则使用onCreate方法。我无法理解为什么意图没有执行/是什么阻止了它。这已经过测试,并且在以前工作得很好

当执行意图行时,我在控制台上获得以下输出:

I/Timeline: Timeline: Activity_launch_request id:com.example.tobias.run time:2369840341
这是我的清单,如果有帮助的话:

<?xml version="1.0" encoding="utf-8"?>
用户注销,但未发送意图,这使应用程序处于无效状态,然后在尝试执行需要用户的代码几秒钟后崩溃。这不是我第一次退出这个应用程序,我已经做了很多次了,而且效果很好


这是一个奇怪的问题,我希望有人能帮我找到错误。提前谢谢。

问题:

                //...
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);
               //...
              //...    
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);
             //...
解决方案:

                //...
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);
               //...
              //...    
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);
             //...

当您使用
setFlags
时,您正在替换旧的标志。。。当您使用
addFlags
时,您正在添加新的标志。记住,
标志
只是一个整数,它是2的幂。。。在二进制文件中,标志如下所示:1、10、100、1000等等。。。(在本例中为1、2、4、8)。因此,
addFlags
所做的是使用
|
运算符将传递的整数追加。

尝试将您的私有
loadLogIn()
方法置于带有公共修饰符的
onCreate()
方法之外。。。出现此问题的原因可能是匿名类声明中的
loadLogIn()
方法不可访问。@jackjay好主意,我将其添加到了代码中,但这不是问题所在。
loadLogIn()
在需要时被调用,但意图不起任何作用。完成当前活动并返回nullcheck,这将防止崩溃。你能分享一下你的物流活动吗?@linxy完成活动是什么意思?而且我的后勤工作非常简单,所有这些都与问题无关。如果有帮助的话,我仍然可以添加它,但是从来没有调用过登录活动
onCreate
。你是否尝试过清除标志,只打开没有标志的活动??