任务
我应该连接我在android中创建的两个应用程序。让我们称其中一个A(活动A1,A2,A3)和B(活动B1,B2,B3)。用户将从应用程序A登录,并将被重定向到应用程序B.在应用程序B中,用户可以在活动之间跳转。完成后,他将按应用程序B中的LOGOUT,并将重定向到应用程序A. 这样做,我希望从Backstack中清除应用程序B.
问题
即使在注销时我正在完成堆栈中的所有活动,仍然会在后台堆栈中提到应用程序名称B.
到目前为止我取得的成就
这是我从应用程序A调用应用程序B的方法
Intent intent= new Intent(Intent.ACTION_MAIN);
intent.setComponent(new ComponentName("appB", "appB.MainActivity"));
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.putExtra(ARG_G2G_ACCESS_TOKEN, mTokenResponse.getAccessToken());
startActivity(intent);
注销后,这就是我再次调用应用程序A的方式。首先,我完成了Task中运行的所有活动。然后我做
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.setComponent(new ComponentName("appA", "appA.MainActivity"));
然而,即使使用上述应用程序应用程序B仍然在Backstack中提到。我希望在从A发布B时将其删除。
由于
答案 0 :(得分:2)
根据您的问题,您可以添加finish ()
或使用android:noHistory="true"
finish ()
: 在您的活动完成后调用此应该关闭。
Intent intent= new Intent(Intent.ACTION_MAIN);
.....
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
.........
startActivity(intent);
finish();
您可以访问 How to finish current activity in Android 。希望这有帮助。
答案 1 :(得分:1)
卢克在下面的链接中查看答案:
Close application and remove from recent apps/
<activity
android:name="com.example.ExitActivity"
android:theme="@android:style/Theme.NoDisplay"
android:autoRemoveFromRecents="true"/>
enter code here
然后创建一个类ExitActivity.java:
public class ExitActivity extends Activity
{
@Override protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
if(android.os.Build.VERSION.SDK_INT >= 21)
{
finishAndRemoveTask();
}
else
{
finish();
}
}
public static void exitApplication(Context context)
{
Intent intent = new Intent(context, ExitActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NO_ANIMATION | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
context.startActivity(intent);
}
}