直接代码,不说废话
1.创建一个MyApplication继承自Application,如下:
public class MyApplication extends Application {
private List<Activity> oList;// 用于存放所有启动的Activity的集合
public void onCreate() {
super.onCreate();
oList = new ArrayList<Activity>();
}
/**
* 添加Activity
*/
public void addActivity_(Activity activity) {
// 判断当前集合中不存在该Activity
if (!oList.contains(activity)) {
oList.add(activity);// 把当前Activity添加到集合中
}
}
/**
* 销毁单个Activity
*/
public void removeActivity_(Activity activity) {
// 判断当前集合中存在该Activity
if (oList.contains(activity)) {
oList.remove(activity);// 从集合中移除
activity.finish();// 销毁当前Activity
}
}
/**
* 销毁所有的Activity
*/
public void removeALLActivity_() {
// 通过循环,把集合中的所有Activity销毁
for (Activity activity : oList) {
activity.finish();
}
}
}
2.立即去manifest文件中在Application中添加name,如下:
3.写一个基类Activity继承自Activity,如下:
public class BaseActivity extends Activity {
private MyApplication application;
private BaseActivity oContext;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (application == null) {
// 得到Application对象
application = (MyApplication) getApplication();
}
oContext = this;// 把当前的上下文对象赋值给BaseActivity
addActivity();// 调用添加方法
}
// 添加Activity方法
public void addActivity() {
application.addActivity_(oContext);// 调用myApplication的添加Activity方法
}
// 销毁当个Activity方法
public void removeActivity() {
application.removeActivity_(oContext);// 调用myApplication的销毁单个Activity方法
}
// 销毁所有Activity方法
public void removeALLActivity() {
application.removeALLActivity_();// 调用myApplication的销毁所有Activity方法
}
/* 把Toast定义成一个方法 可以重复使用,使用时只需要传入需要提示的内容即可 */
public void show_Toast(String text) {
Toast.makeText(oContext, text, Toast.LENGTH_SHORT).show();
}
}
4.将那些连串跳转的Activity继承自BaseActivity,下面我是从MainActivity跳到One再到One2再到MainActivity,最后在MainActivity中实现双击退出以及退出所有连续的Activity如下:
public class MainActivity extends BaseActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void btnBack(View view)
{
Intent intent=new Intent(MainActivity.this,One.class);
startActivity(intent);
}
// 重写onKeyDown方法
public boolean onKeyDown(int keyCode, KeyEvent event) {
// 判断当点击的是返回键
if (keyCode == event.KEYCODE_BACK) {
exit();// 退出方法
}
return true;
}
private long pre_time = 0;
// 退出方法
private void exit() {
long curr_time=System.currentTimeMillis();
// 如果在两秒大于2秒
if (curr_time - pre_time > 2000) {
show_Toast("再点击一次退出应用程序");
// 获得当前的时间
pre_time = curr_time;
} else {
// 点击在两秒以内
removeALLActivity();// 执行移除所以Activity方法
}
}
}
public class One extends BaseActivity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setTitle("one");
setContentView(R.layout.activity_main);
}
public void btnBack(View view)
{
Intent intent=new Intent(One.this,One2.class);
startActivity(intent);
}
}
public class One2 extends BaseActivity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setTitle("one2");
setContentView(R.layout.activity_main);
}
public void btnBack(View view)
{
Intent intent=new Intent(One2.this,MainActivity.class);
startActivity(intent);
}
}
过程就是So Easy,最后别忘记在manifest中声明所有的Activity哦