`
jayghost
  • 浏览: 441806 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

【转】Android程序完全退出的三种方法

 
阅读更多

以下为网络上找的文章,但是很不给力.

=========================================

很多网友可能发现自己的Android程序有很多Activity,比如说主窗口A,调用了子窗口B,在B中如何关闭整个Android应用程序呢? 这里Android123给大家三种比较简单的方法实现。

  首先要说明在B中直接使用finish(),接下来手机显示的还是主窗口A,所以一起来看看Android开发网是如何实现的吧.

  1. Dalvik VM的本地方法

  android.os.Process.killProcess(android.os.Process.myPid())    //获取PID,目前获取自己的也只有该API,否则从/proc中自己的枚举其他进程吧,不过要说明的是,结束其他进程不一定有权限,不然就乱套了。
  System.exit(0);   //常规java、c#的标准退出法,返回值为0代表正常退出

 2. 任务管理器方法

   首先要说明该方法运行在Android 1.5 API Level为3以上才可以,同时需要权限android.permission.RESTART_PACKAGES,我们直接结束自己的package即可,直接使用ActivityManager类的restartPackage方法即可,参数为package name,该类通过getSystemService(Context.ACTIVITY_SERVICE)来实例化ActivityManager对象,这种方法系统提供的,但需要显示声明权限,所以使用中需要综合考虑。

 3. 根据Activity的声明周期

   我们知道Android的窗口类提供了历史栈,我们可以通过stack的原理来巧妙的实现,这里我们在A窗口打开B窗口时在Intent中直接加入标志Intent.FLAG_ACTIVITY_CLEAR_TOP,这样开启B时将会清除该进程空间的所有Activity。

 在A窗口中使用下面的代码调用B窗口

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

 接下来在B窗口中需要退出时直接使用finish方法即可全部退出。

 

============================================

在工作过程序中遇到一个需要完全关闭应用程序的问题,在网络上找了一大堆的文章,每篇都是用System.exit(0)或者android.os.Process.killProcess(android.os.Process.myPid())这两种方法,但是我试过了,System.exit(0)这个根本不行,而android.os.Process.killProcess(android.os.Process.myPid())这个只能关闭当前的Activity,也就是对于一个只有单个Activity 的应用程序有效,如果对于有多外Activity的应用程序它就无能为力了。

         下面我介绍一下对于多个Activity的应用程序的完全关闭方法:

在ActivityManager类中提供了如下的方法:

         /**

         * Have the system perform a force stop of everything associated with

         * the given application package. All processes that share its uid

         * will be killed, all services it has running stopped, all activities

         * removed, etc. In addition, a {@link Intent#ACTION_PACKAGE_RESTARTED}

         * broadcast will be sent, so that any of its registered alarms can * be stopped, notifications removed, etc.

         *

         * You must hold the permission * {@link android.Manifest.permission#RESTART_PACKAGES} to be able to

         * call this method.

         *

         * @param packageName The name of the package to be stopped.

         */

    public void restartPackage(String packageName) {

    try {

        ActivityManagerNative.getDefault().restartPackage(packageName);

    }

    catch (RemoteException e) { }

}

所以如果要关闭整个应用程序的话只需要运行以下两行代码就行:

ActivityManager activityMgr= (ActivityManager) this.getSystemService(ACTIVITY_SERVICE);

activityMgr.restartPackage(getPackageName());

最后还需要添加这个权限才行:

<!-- 关闭应用程序的权限 -->
<uses-permission android:name="android.permission.RESTART_PACKAGES" />

 

============================================

 

 

 

经过测试,下面文章的方法比较给力但是还需要修改下

 

1.权限必须加上

2.MainActivity 为调用退出功能所在Activity

 

     ActivityManager activityMgr=(ActivityManager)MainActivity.this.getSystemService(ACTIVITY_SERVICE);
     activityMgr.restartPackage(getPackageName());

 

 

 

<!-- 关闭应用程序的权限 -->
<uses-permission android:name="android.permission.RESTART_PACKAGES" />

分享到:
评论

相关推荐

    Android-完全退出程序的方法.zip

    Android-完全退出程序的方法.zip Android-完全退出程序的方法.zip Android-完全退出程序的方法.zip

    Android程序完全退出的方法

    本文将详细介绍几种实现Android程序完全退出的方法,并对每种方法进行深入解析。 #### 二、DalvikVM的本地方法:`android.os.Process.killProcess()` **方法概述:** `android.os.Process.killProcess()` 是一种...

    怎样完全退出android程序

    在Android中,如果想退出Android程序,一般都是调用finish()、System.exit(0)android.os.Process.killProcess(android.os.Process.myPid())等方法来实现退出程序功能,可是在实际开发中,并不能达到完全退出应用程序...

    android 如何完全退出程序

    ### Android如何实现应用程序的完全退出 在Android开发中,实现应用程序的完全退出是一个常见的需求,尤其是在需要确保资源被正确释放,避免内存泄漏的情况下。本文将详细介绍如何通过使用单例模式和自定义`...

    Android应用开发多个activity完全退出程序方法

    要实现多个Activity完全退出程序,我们可以采取以下几种方法: 1. **Override onBackPressed()**:在每个Activity的Java代码中重写`onBackPressed()`方法。在这个方法中,除了调用`super.onBackPressed()`来执行...

    Android完全退出程序方法

    本篇文章将深入探讨如何通过广播机制来实现Android程序的完全退出。 首先,我们需要理解Android的Activity栈管理机制。每当启动一个新的Activity,系统会将其压入一个全局的Task(任务)栈中。用户操作导致的回退...

    ANDROID 应用完全退出

    然而,有时开发者或用户可能希望应用程序能够完全退出,以防止某些资源泄露或内存占用过高。本文将探讨如何在Android应用中实现完全退出,以及解决引用Context未释放导致的OOM(Out of Memory)问题。 首先,理解...

    android 完全退出程序

    在Android系统中,完全退出一个...总之,完全退出Android程序涉及对应用生命周期的理解、Activity栈的管理、Intent的使用以及处理后台组件。合理的设计和编程实践将确保应用既能满足用户需求,又能在必要时高效地退出。

    Android-完全退出程序的方法(源码).zip

    Android-完全退出程序的方法(源码).zip

    基于Android的完全退出程序的方法.zip

    在Android开发中,确保应用程序完全退出是一个常见的需求,特别是在用户希望释放系统资源或者节省电量时。本教程将探讨如何在Android应用中实现“完全退出”的功能。我们将主要围绕以下两个核心知识点进行深入讨论:...

    Android 程序安全退出

    3. **多Activity应用**:对于拥有多个Activity的应用,简单地在一个Activity上调用`finish()`可能不足以完全退出程序,因为其他Activity可能仍在后台。在这种情况下,可以通过广播或自定义事件来通知所有Activity...

    使用Application做android完全退出系统实例

    在Android开发中,有时我们需要实现一个功能,使得用户在点击某个按钮后,应用程序能够完全退出,包括清除所有活动栈中的Activity以及停止后台服务。这里我们将深入探讨如何利用`Application`类来实现这一功能,以及...

    安卓Android源码——完全退出程序的方法.rar

    在安卓(Android)平台上,开发应用时,有时我们需要提供一种机制让用户能够完全退出应用程序,关闭所有相关的活动(Activities)和服务。本资料“安卓Android源码——完全退出程序的方法.rar”可能包含了一些实现这...

    Android应用源码完全退出程序的方法.zip

    本资料包“Android应用源码完全退出程序的方法.zip”聚焦于如何在Android应用程序中实现这一功能。以下是关于这一主题的详细知识讲解: 1. **Activity生命周期**: Android应用基于Activity堆栈进行管理,每个...

    Android 完全退出程序,关闭所有Activity

    在Android应用开发中,完全退出程序意味着结束所有与应用程序相关的活动(Activity)并释放系统资源。用户通常期望点击“退出”按钮后,整个应用程序能够完全关闭,而不是仅仅停留在后台运行。下面我们将详细讨论...

    安卓Android源码——完全退出程序的方法.zip

    在安卓(Android)平台上,开发应用时,有时我们需要提供一种机制让用户能够完全退出应用程序,关闭所有相关的活动(Activities)和服务。本压缩包文件“安卓Android源码——完全退出程序的方法.zip”可能包含了一个...

    Android应用源码完全退出程序的方法-IT计算机-毕业设计.zip

    在Android应用开发中,完全退出程序是一个常见的需求,特别是在用户希望彻底关闭应用,释放系统资源时。本项目提供了一个Android应用源码示例,适用于毕业设计或深入理解Android应用程序生命周期的学习。下面将详细...

    完全退出程序的方法_Android.rar

    本文将深入探讨完全退出程序的各种方法以及它们的适用场景。 首先,我们需要理解Android应用程序的运行机制。Android采用Activity栈的概念,每当用户启动一个新的Activity,它会被压入栈顶,而当用户按下Back键或者...

Global site tag (gtag.js) - Google Analytics