`
寻梦者
  • 浏览: 635704 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

android中的关闭应用程序进程

阅读更多

 

 

使用下面的代码可以退出应用程序:

int pid = android.os.Process.myPid();

android.os.Process.killProcess(pid);

 

 

工作过程序中遇到一个需要完全关闭应用程序的问题,每篇都是用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的应用程序的完全关闭方法:
Java代码:
/** 
* 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) { }
}
复制代码
       所以如果要关闭整个应用程序的话只需要运行以下两行代码就行:
Java代码:
ActivityManager activityMgr= (ActivityManager) this.getSystemService(ACTIVITY_SERVICE);
activityMgr.restartPackage(getPackageName());
复制代码
       现在我们已经成功到一半了,那么还有一半是什么那,那就是我们老爱忘记的权限,下面看看权限代码:
Java代码:
<!-- 关闭应用程序的权限 -->
<uses-permission android:name="android.permission.RESTART_PACKAGES" />

分享到:
评论
2 楼 寻梦者 2012-05-17  
qzterminator 写道
关不了,又会重启。

在application内弄个activity的管理栈,每次启动一个activity就在栈中添加,然后用户退出应用的时候,调用一个公共方法循环遍历activity的管理栈,finish掉每一个activity,就可以退出应用了。
1 楼 qzterminator 2012-05-16  
关不了,又会重启。

相关推荐

    android关闭应用程序

    在Android开发中,控制应用程序的生命周期是至关重要的,特别是在需要优雅地关闭应用或者管理后台进程时。本文将深入探讨在不同Android版本下关闭应用程序的方法、权限需求以及最佳实践。 ### 关闭应用程序的方法 ...

    android安卓app如何彻底结束进程. 光调用finish()是结束不了程序的,程序中的线程依旧在后台运行.zip

    在Android系统中,当用户点击应用的返回按钮或者调用`finish()`方法时,当前活动(Activity)会被销毁,但这并不意味着整个应用程序进程被完全结束。实际上,Android系统为了优化性能,可能会保持应用的部分或全部...

    android后台程序清理器

    "Android后台程序清理器"是一款专门针对Android操作系统设计的应用程序,其主要功能是管理和优化手机中的后台运行程序,以提高设备性能和延长电池寿命。在Android系统中,应用程序经常会在用户不知情的情况下继续...

    android 完全退出程序

    在退出应用时,可以使用一个特殊的Intent启动系统设置,让用户选择关闭应用。例如,可以创建一个BroadcastReceiver监听特定的Intent,并在接收到Intent时执行退出操作。 5. **后台服务与广播接收器** 如果应用包含...

    Android中获取系统内存信息以及进程信息

    例如,当系统内存不足时,可以通知用户关闭一些后台应用以释放内存;或者根据运行的进程和服务来分析应用的资源消耗。 总的来说,`ActivityManager`是Android系统管理的核心工具之一,它允许开发者深入理解系统状态...

    android守护进程

    2. 实现守护进程逻辑:在Service的onCreate()方法中,我们将编写代码来确保服务在后台持续运行,即使用户关闭了应用程序。这通常涉及到进程优先级调整、异常处理和防止被系统清理的策略。 3. 绑定到系统启动:为了...

    Android 锁屏页面避免被杀掉,解锁会自动关闭页面。防止后台运行时被关闭。

    在Android开发中,保持应用程序在锁屏状态下不被系统优化机制清理,并且在用户解锁后能够自动关闭特定页面,是一项常见的需求。这涉及到Android系统的进程管理、权限控制以及活动生命周期管理等多个方面。以下是对这...

    Android实现双进程守护

    在Android系统中,"双进程守护"是一种设计模式,用于确保关键服务即使在主应用程序被关闭或者设备重启后也能持续运行。这种技术的核心是利用Android的Service组件,并将其部署在两个不同的进程中,以提高服务的稳定...

    Android项目实战--手机卫士31--注册广播事件自动杀死进程

    在Android中,BroadcastReceiver是系统用来在不同的应用程序组件之间传递消息的一种机制。通过注册广播接收器,应用可以监听系统或自定义的广播事件,例如当设备启动、网络状态改变或者特定的用户行为发生时。注册...

    Android-AppDaemon,[已弃用]应用程序进程守护程序。.zip

    "Android-AppDaemon"就是这样一个开源项目,它的主要功能是作为应用程序的进程守护程序,防止应用程序被系统因为资源管理而意外关闭,从而保持应用的活动状态。 Android系统的内存管理机制是为了优化设备性能和电池...

    死而复活的android进程永存

    然而,有时开发者或用户可能希望某些应用程序的进程能够持续运行,不受系统自动清理的影响,这就是“死而复活的Android进程永存”现象。下面我们将详细讨论这个话题。 1. **Android进程生命周期** Android中的进程...

    android7 关闭ANR对话框代码

    在Android系统中,ANR(Application Not Responding)是一个常见的问题,它表示应用程序无响应,通常出现在用户界面长时间无法交互时。在Android 7.0版本中,框架引入了一种新特性,即自动关闭ANR对话框,并允许...

    Adobe Flash Builder 4.5 Android Air 程序开发系列 之四 打开与关闭应用程序是的保存数据

    首先,Android系统中的应用程序(也称为Activity)在各自的进程中运行,并拥有独特的用户ID。活动管理器负责维护应用程序的生命周期,这通常涉及到三个主要阶段:运行、暂停和停止。在AIR应用中,这些生命周期阶段...

    android 11源码中如何提高应用oom_adj级别,保活应用(csdn)————程序.pdf

    在Android 11源码中,提高应用的`oom_adj`级别是为了确保应用程序在系统内存紧张时能够保持活跃,防止被系统强制关闭。`oom_adj`(Out-of-Memory Adjuster)是Android用来管理进程优先级和内存分配的一个关键参数。...

    解决getRunningAppProcesses只得到本应用的进程的问题(2)

    在Android开发中,有时我们需要获取设备上正在运行的应用进程信息,比如进行性能分析或优化内存使用。然而,当你尝试使用`ActivityManager.getRunningAppProcesses()`方法时,可能会遇到一个问题:这个方法默认只会...

    在Android中调用二进制可执行程序

    ### 在Android中调用二进制可执行程序 #### 知识点一:理解Android环境下的二进制可执行程序 在深入探讨如何在Android环境中调用二进制可执行程序之前,首先需要理解Android系统的基本架构以及它与传统Linux系统...

    自动关闭占用端口的ADB进程

    进程列表里面出现多个ADB,导致端口占用,对于Android开发人员很麻烦,可以自动关闭占用

    android 如何完全退出程序

    在Android中,单纯调用`System.exit(0)`或`android.os.Process.killProcess(android.os.Process.myPid())`并不能确保应用程序中的所有Activity都被完全关闭,尤其是当应用程序中有多个Activity栈存在时。这种情况下...

    Android-Application Fundamental-应用程序基础-中文翻译校正版

    - 每个Android应用程序默认运行在自己的Linux进程中,这意味着当应用程序中的代码需要执行时,Android会启动相应的进程;当不再需要该进程或有其他应用程序请求系统资源时,会关闭这个进程。 - 每个进程有自己的...

    退出android应用程序Demo

    在Android开发中,退出应用程序是一个常见的需求,尤其是在某些特定的应用场景下,用户可能希望完全关闭应用,而不是简单地退回到后台。本示例"退出Android应用程序Demo"将讲解如何实现这个功能,涉及到的关键知识点...

Global site tag (gtag.js) - Google Analytics