当前位置: 移动技术网 > IT编程>移动开发>Android > Android 完全退出应用程序的解决方法

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

2019年07月24日  | 移动技术网IT编程  | 我要评论

鸫琉璃,cf新年广场遁地,杨树鹏多高

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

设计:


有两个应用界面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);
 }
}

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网