A页面finish()跳转到主页面后,在主页面退出程序时又跳转到A页面
解决:
这里我们在A窗口打开B窗口时在Intent中直接加入标志 Intent.FLAG_ACTIVITY_CLEAR_TOP,这样开启B时将会清除该进程空间的所有Activity。
在A窗口中使用下面的代码调用B窗口
Intent intent = new Intent(LoginActivity.this, HomeActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);//它可以关掉所要到的界面中间的activity
startActivity(intent);
接下来在B窗口中需要退出时直接使用finish方法即可全部退出
几种结束当前Activity的方法
1、//关闭当前activity
finish();
2、//关闭当前activity
android.os.Process.killProcess(android.os.Process.myPid());
3、//关闭当前activity
System.exit(0);
4、//关闭当前activity
this.onDestroy();
自定义一个Actiivty 栈,利用一个单例模式的Activity栈来管理所有Activity。并提供退出所有Activity的方法
package com.layout;
import java.util.LinkedList;
import java.util.List;
import android.app.Activity;
import android.app.Application;
/**
* 一个类 用来结束所有后台activity
* @author Administrator
*
*/
public class SysApplication extends Application {
//运用list来保存们每一个activity是关键
private List<Activity> mList = new LinkedList<Activity>();
//为了实现每次使用该类时不创建新的对象而创建的静态对象
private static SysApplication instance;
//构造方法
private SysApplication(){}
//实例化一次
public synchronized static SysApplication getInstance(){
if (null == instance) {
instance = new SysApplication();
}
return instance;
}
// add Activity
public void addActivity(Activity activity) {
mList.add(activity);
}
//关闭每一个list内的activity
public void exit() {
try {
for (Activity activity:mList) {
if (activity != null)
activity.finish();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
System.exit(0);
}
}
//杀进程
public void onLowMemory() {
super.onLowMemory();
System.gc();
}
}
在每个activity被创建的时候调用此方法,将该activity添加到list中去。
SysApplication.getInstance().addActivity(this);
在需要关闭所有activity时,调用此方法
//关闭整个程序
SysApplication.getInstance().exit();