服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - Android - Android 完全退出应用程序的解决方法

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

2021-01-10 14:25Android开发网 Android

本篇文章小编为大家介绍,Android 完全退出应用程序的解决方法。需要的朋友参考下

有一种需要,我们在菜单项中点击退出应用程序,应用程序就退出,不需要回到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);
 }
}

延伸 · 阅读

精彩推荐