Android退出程序的几种方法

我们两清 提交于 2019-12-01 20:48:21
  1. finish()

    针对单个Activity,会调用onDestroy方法,关闭当前Activity但并没有释放资源,如果Activity历史栈中不仅仅只包含当前的Activity,那么会回退到之前的Activity

  2. System.exit(0)

    针对单个Activity,不会调用onDestroy,关闭当前Activity并释放资源,如果Activity历史栈中不仅仅只包含当前的Activity,会报错

  3. android.os.Process.killProcess(android.os.Process.myPid());

    针对单个Activity,不会调用onDestroy,关闭当前Activity并释放资源,如果Activity历史栈中不仅仅只包含当前的Activity,会报错

  4. 任务管理器模式

    据说这种方式将会结束和程序包关联的一切进程(但是实测下来的效果并不理想)

    ActivityManager am = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
    if( android.os.Build.VERSION.SDK_INT < 8){
        am.restartPackage(getPackageName());
     //需要权限android.permission.RESTART_PACKAGES
    }else{
        am.killBackgroundProcesses(getPackageName());
     //需要权限android.permission.KILL_BACKGROUND_PROCESSES
    }

  5. Intent方式

    在从子页面跳转到主页面(需要执行退出程序的页面)时,进行intent设置来清空Activity历史栈,然后在主页面finish()即可

    Intent intent = new Intent();
    intent.setClass(ChildActivity.this, MainActivity.class);
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); //注意本行的FLAG设置
    startActivity(intent);

  6. Activity栈

    原理就是构建一个单独的Activity栈管理器(需要继承Application),在每个Activity创建的以后,加入其中,然后在退出程序时,遍历它关闭所有Activity,代码参考来源2... 

 

 

‍参考来源1:http://blog.sina.com.cn/s/blog_5da93c8f0101772p.html

 

‍参考来源2:http://blog.csdn.net/sunnyfans/article/details/7688092

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!