一:结束Actvity的方法
都知道,结束一个当前Activity有四种方法:
//关闭当前activity方法一
finish();
//关闭当前界面方法二
android.os.Process.killProcess(android.os.Process.myPid());
//关闭当前界面方法三
System.exit(0);
//关闭当前界面方法四
this.onDestroy();
其中最常用到也是最安全的方式应该是finish()方法;这是结束当前Activity的一般使用的方法,但如果已经启动了四个Activity:A,B,C和D,这时候在D Activity里,想再启动一个Activity B,但不变成A,B,C,D,B,而是希望是A,B,而且B上的数据依然保留
Intent intent = new Intent();
intent.setClass(D.this, B.class);
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);//设置不要刷新将要跳到的界面
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);//它可以关掉所要到的界面中间的activity
startActivity(intent);
如果已经启动了四个Activity:A,B,C和D,在D Activity里,想再启动一个Activity B,但不变成A,B,C,D,B,而是希望是A,B,而且B上的数据不保留
Intent intent = new Intent();
intent.setClass(D.this, B.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);//它可以关掉所要到的界面中间的activity
startActivity(intent);
需要注意的是:A的Manifest.xml最好配置成android:launchMode="singleTop",一般A是程序的入口点,从D回到A的activity,加入标识Intent.FLAG_ACTIVITY_CLEAR_TOP这个过程中会把栈中B,C,都清理掉。因为A是android:launchMode="singleTop"
不会调用oncreate(),而是响应onNewIntent()这时候判断Intent.FLAG_ACTIVITY_CLEAR_TOP,然后把A finish()掉。
栈中A,B,C,D全部被清理。所以整个程序退出了。
如果已经启动了四个Activity:A,B,C和D,在D Activity里,想再启动一个 Activity B,但不变成A,B,C,D,B,而是希望是A,C,D,B,则可以像下面写代码:
Intent intent1 = new Intent(TableActivity.this, FrameActivity.class);
intent1.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
startActivity(intent1);
二:使用Intent调用系统服务:(拨号/发短信)