一、递归退出
在启动新的activity时使用startActivityForResult,然后重写一个OnActivityResult的方法并在次finish自己。
代码:
在第一个页面启动第二个页面时使用startActivityForResult启动,
- public void JumpB(View view){
- Intent intent=new Intent(this,BActivity.class);
-
- startActivityForResult(intent,0x101);
- }
在这个页面重写onActivityResult方法,并执行finish()方法
- @Override
- protected void onActivityResult(int requestCode, int resultCode, Intent data) {
- super.onActivityResult(requestCode, resultCode, data);
- finish();
- }
当第二个页面执行finish()方法后就会引起onActivityResult 里面方法的执行。从而达到退出应用程序的效果
- public void exit(View view){
- finish(); 退出当前的Activity
-
- }
二、栈退出
首先第一步:建立一个全局的变量application
- package com.example.myapplication.Application;
-
- import android.app.Activity;
- import android.app.Application;
-
- import java.util.ArrayList;
- import java.util.List;
-
-
-
-
-
- public class MyApplication extends Application {
-
-
- List<Activity> activities=new ArrayList<>();
-
-
- public void add(Activity activity){
- activities.add(activity);
- }
-
-
- public void exit(){
- for (Activity activity : activities) {
- activity.finish();
- }
-
- }
-
- }
注意:必须在AndroidManifest.xml 中配置自己的application
第二步:
在每一个Activity中得到application,并强转为自己的application,再将activity添加进application
- MyApplication myApplication = (MyApplication) getApplication();
- myApplication.add(this);
最后一步:
在你需要退出应用程序的地方调用 myApplication.exit();
- public void exit(View view){
- myApplication.exit();
- }
三、抛异常退出
自定义一个错误,让手机无响应程序,然后再令无响应程序不可见,就完成了抛异常退出。
四、手机返回键退出
1、利用时间差退出
- private long oldTime = 0;
-
- @Override
- public void onBackPressed() {
- long NowTime = System.currentTimeMillis();
- if((NowTime - oldTime) > 2000){
- Toast.makeText(this, "再按一次退出程序", Toast.LENGTH_SHORT).show();
- oldTime = NowTime;
- }
- else{
- this.finish();
- System.exit(0);
- }
- }
2、利用线程延时退出
- private static boolean BackKeyPressed = false;
-
- @Override
- public void onBackPressed() {
- if(!BackKeyPressed){
- Toast.makeText(this, "再按一次退出程序", Toast.LENGTH_SHORT).show();
- mBackKeyPressed = true;
- new Timer().schedule(new TimerTask() {
- @Override
- public void run() {
- BackKeyPressed = false;
- }
- }, 2000);
- }
- else{
- this.finish();
- System.exit(0);
- }
- }