停止Android应用程序的所有活动和片段

时间:2014-09-24 19:34:18

标签: android android-intent android-activity android-fragments

要与我正在开发的应用程序断开连接,我将停止所有活动并启动LoginActivity。为此,我使用下面的代码。 LoginActivity已启动,但是当我点击手机的后退按钮时,我再次连接而没有提供登录名和密码。

注意:我的应用程序中还有片段!

你可以帮我pllz吗?

// After logout redirect user to Loing Activity
        Intent i = new Intent(_context, LoginActivity.class);
        // Closing all the Activities
        i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

        // Add new Flag to start new Activity
        i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

        // Staring Login Activity
        _context.startActivity(i);

1 个答案:

答案 0 :(得分:1)

调用i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)在Intent标志中设置标志Intent.FLAG_ACTIVITY_CLEAR_TOP。然后你这样做:

    i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

这会将Intent标记的内容设置为Intent.FLAG_ACTIVITY_NEW_TASK,从而清除您之前设置的标记Intent.FLAG_ACTIVITY_CLEAR_TOP

您不需要使用Intent.FLAG_ACTIVITY_NEW_TASK,因为这实际上不会启动新任务(因为您的活动都具有相同的taskAffinity)。

设置Intent.FLAG_ACTIVITY_CLEAR_TOP应该足以做你想做的事。但是,您需要确保LoginActivity在任务中仍处于活动状态(即:您不应该在其上调用finish())。如果您的LoginActivity没有出现在您的任务的活动堆栈中(因为您已经在其上调用了finish()),那么Android将只创建LoginActivity的新实例,把它放在堆栈顶部。