本人用的退出方法是 Android 关闭多个视图Intent.FLAG_ACTIVITY_CLEAR_TOP用法 。
现在本人有activity a , activity b, activity c,activity d, 这四个activity ,
首先在 activity a 中 跳转到 activity b 中,
然后又由activity b 中跳转到activity c 中,
在由activity c中回到activity a 中
这时候本人在由activity a 中 用
Intent intent = new Intent();
intent.setClass(D.this, A.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); //这这儿设置的
startActivity(intent);
finish();
跳转到 activity d中 本人已经在activity d中的Manifest.xml配置成android:launchMode=”singleTop”
又在activity d 中调用了
Override
protected void onNewIntent(Intent intent) {
// TODO Auto-generated method stub
super.onNewIntent(intent);
//退出
if ((Intent.FLAG_ACTIVITY_CLEAR_TOP & intent.getFlags()) != 0) {
finish();
}
}
退出方法, 可运行的结果是,还是回到了activity c中说明这个Intent.FLAG_ACTIVITY_CLEAR_TOP根本没有把盏中的 a b c 给清理掉,这是为什么呢?????
现在本人有activity a , activity b, activity c,activity d, 这四个activity ,
首先在 activity a 中 跳转到 activity b 中,
然后又由activity b 中跳转到activity c 中,
在由activity c中回到activity a 中
这时候本人在由activity a 中 用
Intent intent = new Intent();
intent.setClass(D.this, A.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); //这这儿设置的
startActivity(intent);
finish();
跳转到 activity d中 本人已经在activity d中的Manifest.xml配置成android:launchMode=”singleTop”
又在activity d 中调用了
Override
protected void onNewIntent(Intent intent) {
// TODO Auto-generated method stub
super.onNewIntent(intent);
//退出
if ((Intent.FLAG_ACTIVITY_CLEAR_TOP & intent.getFlags()) != 0) {
finish();
}
}
退出方法, 可运行的结果是,还是回到了activity c中说明这个Intent.FLAG_ACTIVITY_CLEAR_TOP根本没有把盏中的 a b c 给清理掉,这是为什么呢?????
解决方案
20
写个BaseActivity,接收退出广播,然后啪啪啪全部主动finish,然后就退出了
20
写个静态变量,开一个加一个进去,退出时全finish
20
不需要每个啊,只需要在基类BaseActivity里加一次就行,其它的Activity都继承BaseActivity