欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android 完全退出应用程序的解决方法

程序员文章站 2023-12-11 23:09:10
有一种需要,我们在菜单项中点击退出应用程序,应用程序就退出,不需要回到mainactivity设计:有两个应用界面mainactivity和bactivity,以及用于程序...

有一种需要,我们在菜单项中点击退出应用程序,应用程序就退出,不需要回到mainactivity

设计:
Android 完全退出应用程序的解决方法

有两个应用界面mainactivity和bactivity,以及用于程序的通用类exitutil

步骤:

1、添加一个类,名为exitutil

复制代码 代码如下:

public class exitutil {
 public static final int exit_application = 0x0001;
 private context mcontext;
 public exitutil(context context) {
  mcontext = context;
 }
 // 完全退出应用程序
 public void exit() {
  intent intent = new intent(mcontext, mainactivity.class);
  // 设置flag!!!表示从当前activity跳转到intent构造方法中添加的类,并且把两个activity之间的activity给finish掉!
  intent.setflags(intent.flag_activity_clear_top);
  // 发出退出应用程序指示
  intent.putextra("flag", exit_application);
  mcontext.startactivity(intent);
 }
}

2、添加bactivity,覆写其中的方法如下,并且需要在清单文件中对此activity进行配置
复制代码 代码如下:

public class bactivity extends activity {
 private static final int menu_exitapplication = menu.first;
 @override
 protected void oncreate(bundle savedinstancestate) {
  super.oncreate(savedinstancestate);
  textview tv = new textview(this);
  tv.settext("wecolme!");
  setcontentview(tv);
 }
 @override
 public boolean oncreateoptionsmenu(menu menu) {
  menu.add(0, menu_exitapplication, 0, "退出程序");
  return super.oncreateoptionsmenu(menu);
 }
 @override
 public boolean onoptionsitemselected(menuitem item) {
  // 其它activity调用程序就通过此方法
  if (item.getitemid() == menu_exitapplication) {
   exitutil eu = new exitutil(this);
   eu.exit();
  }
  return super.onoptionsitemselected(item);
 }
}

3、修改mainactivity方法
复制代码 代码如下:

public class mainactivity extends activity {
 button btn = null;
 @override
 protected void oncreate(bundle savedinstancestate) {
  super.oncreate(savedinstancestate);
  setcontentview(r.layout.activity_main);
  btn = (button) findviewbyid(r.id.btn);
  btn.setonclicklistener(new onclicklistener() {// 点击进入bactivity
   @override
   public void onclick(view v) {
    intent intent = new intent(getapplicationcontext(), bactivity.class);
    startactivity(intent);
   }
  });
 }
 // 接受退出程序的指令
 @override
 protected void onstart() {
  int flag = getintent().getintextra("flag", 0);// 第一次,进入应用时获取得到的flag为默认的值0!
  if (flag == exitutil.exit_application) {
   finish();
  }
  log.i("tag", "start");
  super.onstart();
 }
 // 当activity是单例模式的时候,两次启动该activity就不会调用oncreate->onstart这些方法了
 @override
 protected void onnewintent(intent intent) {
  int flag = getintent().getintextra("flag", 0);
  if (flag == exitutil.exit_application) {
   finish();
  }
  log.i("tag", "newintent");
  super.onnewintent(intent);
 }
}

上一篇:

下一篇: