如何打开多个界面之后按返回键直接退出应用

来源:互联网 发布:ubuntu vmware下载 编辑:程序博客网 时间:2024/06/03 21:40

如何打开多个界面之后按返回键直接退出应用

1、自定义广播接收者

每个新开的界面继承下面的父类主活动,并在活动中实现以下代码

public class Activity1 extends BaseActivity{    //这里还有重写oncreate()方法     /**      * 捕获手机物理菜单键      */      private long exitTime = 0;      @Override      public boolean onKeyDown(int keyCode, KeyEvent event) {          if(keyCode == KeyEvent.KEYCODE_BACK){//&& event.getAction() == KeyEvent.ACTION_DOWN              if((System.currentTimeMillis()-exitTime) > 2000){                  Toast.makeText(getApplicationContext(), "再按一次退出程序", Toast.LENGTH_SHORT).show();                  exitTime = System.currentTimeMillis();              } else {                  myExit();              }              return true;          }          return super.onKeyDown(keyCode, event);      }      protected void myExit() {          Intent intent = new Intent();          intent.setAction("ExitApp");          this.sendBroadcast(intent);          super.finish();      }  }

定义父类主活动

在这里注册一个广播接收者,一旦接收到自定义的广播就在onReceive()方法里finish()活动,这样所有继承这个父类的Activity都会finish()掉的。

public class BaseActivity extends Activity {protected BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {      @Override      public void onReceive(Context context, Intent intent) {          finish();      }  };  @Override  public void onResume() {      super.onResume();      // 在当前的activity中注册广播      IntentFilter filter = new IntentFilter();      filter.addAction("ExitApp");      this.registerReceiver(this.broadcastReceiver, filter);  }  @Override  protected void onDestroy() {      // TODO Auto-generated method stub      super.onDestroy();      this.unregisterReceiver(this.broadcastReceiver);    }  

}

完成上面两个步骤之后,每个继承了父类主活动的Activity每次按返回键都会直接退出APP

2、定义一个收集Activity的类,在里面定义一个静态方法返回一个集合,每次创建新的Activity都添加到集合中,在多次打开多个活动后按返回键重写返回键的方法,遍历集合,finish()掉

    for(Activity activity: lists)    {        activity.finish();    }

3、递归退出

在打开新的Activity时使用startActivityForResult,然后自己加标志,在onActivityResult中处理,递归关闭。

4、抛异常强制退出:

该方法通过抛异常,使程序Force Close。
验证可以,但是,需要解决的问题是,如何使程序结束掉,而不弹出Force Close的窗口。

//安全结束进程    android.os.Process.killProcess(android.os.Process.myPid());
0 0
原创粉丝点击