- standard
每次产生一个新的实例Activity放在栈中
- singleTop
如果站顶有Activity的实例则onNewInstance()复用它,否则创建一个新的
- singleTask
会清除栈中Activity之上的所有Activity
Manifest文件中加上taskAffinity属性才会单独在一个Activity栈中,默认情况并不会新建一个栈
利用此方法实现程序的完美退出
- singleInstance
系统会首先判断系统其他栈中是否已经存在此Activity实例,有则直接使用
使用方法可以在Manifest文件中定义,也可以通过Intent.addFlags()设置。
退出程序
ActivityManager manager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningTaskInfo> tasks = manager.getRunningTasks(1); ComponetName baseActivity = tasks.get(0).baskActivity; Intent intent = new Intent(); intent.setComponent(baseActivity); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); intent.putExtra("exit", "1"); content.startActivity(intent);
String exit = intent.getStringExtra("exit"); if(exit != null && exit.equals("1")){ finish(); }
|