我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Android结束进程的方法详解

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Android结束进程的方法详解

本文实例讲述了Android结束进程的方法。分享给大家供大家参考,具体如下:

最近在做一个类似与任务管理器的东西,里面有个功能,可以通过这个管理器结束掉其他的进程。

在Android平台下,结束进程的方法还是比较多的。首先指明,此处的“结束进程”,包含了结束自身进程和结束其他进程两个方面。通过查阅SDK文档和网上的一些资料,自己找到一些结束进程的方法。在这里做一些归纳和总结,文章的部分信息有可能来自网上已有的文章和帖子,由于过了比较长时间,所以若发现本文与其他文章雷同,请谅解。

一、结束一个活动Activity

要主动的结束一个活动Activity,(先强调一下,是结束一个活动,而不是进程)众所周知,肯定是finish方法啦,这个就毋庸置疑了,而且这个方法最后会调用Activity的生命周期函数onDestroy方法,结束当前的Activity,从任务栈中弹出当前的Activity,激活下一个Activity。当然其他的finish系列方法,我们不在这里做详细讨论,有兴趣的同学可以自己查阅一下SDK 的文档。

二、强制结束当前的进程

强行结束当前进程有两个方法。(呵呵,这里就是结束进程了)

1、killProcess(int pid) 例子:


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

对于这个方法,需要详细解释一下。在SDK的文档中,解释如下:

Kill the process with the given PID. Note that, though this API allows us to request to kill any process based on its PID, the kernel will still impose standard restrictions on which PIDs you are actually able to kill. Typically this means only the process running the caller's packages/application and any additional processes created by that app; packages sharing a common UID will also be able to kill each other's processes.

英语不好,不能准确翻译,所以希望大家自己理解,免得对大家造成误解。我个人对这句话的解释就是,这个方法使用是有条件的:

a、将被杀掉的进程 和 当前进程 处于同一个包或者应用程序中;

b、将被杀掉的进程 是由当前应用程序所创建的附加进程;

c、将被杀掉的进程 和 当前进程 共享了普通用户的UID。(这里的普通用户,是相对于Root权限的用户来说的)

2、System.exit(int code) 例子:


System.exit(0);

该方法只能用于结束当前进程自身,个人觉得在程序遇到异常,无法正常执行时,可以通过这个方法强制退出。

需要注意的是,这两个方法,会导致进程非正常退出,就是说,进程退出时不会去执行onPause、onStop和onDestroy方法,那么进程很有可能错过了保存数据的机会。因此,这两个方法最好使用在出现异常的时候!

三、结束另一个进程

要通过一个进程去结束另一个进程。在之前的SDK版本中,一直使用方法restartPackage(packageName)方法,但是在Android的开发文档中介绍说,这个函数会导致一些问题( the previous behavior here is no longer available to applications because it allows them to break other applications by removing their alarms, stopping their services, etc.),所以建议大家使用一个新的方法:

void killBackgroundProcesses(String packageName)

由于这个方法没有返回值,所以我们也不知道我们的目标进程是否真的退出了。但是,我目前只发现了这个可以结束另一个进程的方法。

四、退出到主屏幕(记得是对当前进程的处理)

这个方法,也是退出当前进程的一个方法。如果我们在进程中创建了很多的Activity,但是又不想关闭时去退出不在任务栈顶的Activity,那么就可以直接使用这个方法了。这个方法是通过查阅网上资料看到的。具体可参考本站文章《Android 按后退键退出Android程序的实现方法》

功能:当按下返回键时,就返回到主屏幕,并带有参数FLAG_ACTIVITY_CLEAR_TOP,会清理掉当前的活动。


@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) { // 按下的如果是BACK,同时没有重复
        Intent home = new Intent(Intent.ACTION_MAIN);
        home.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        home.addCategory(Intent.CATEGORY_HOME);
        startActivity(home);
    }
    return super.onKeyDown(keyCode, event);
}

此方法确实结束了当前进程,但是通过Android平台的App Manager工具去查看的话,使用2.3.3的模拟器,会发现刚刚被结束的进程会以Cached background Process的形式存在,并且模拟器给出了解释,说是为了下一次更快捷的启动这个进程。

更多关于Android相关内容感兴趣的读者可查看本站专题:《Android调试技巧与常见问题解决方法汇总》、《Android开发入门与进阶教程》、《Android多媒体操作技巧汇总(音频,视频,录音等)》、《Android基本组件用法总结》、《Android视图View技巧总结》、《Android布局layout技巧总结》及《Android控件用法总结》

希望本文所述对大家Android程序设计有所帮助。

您可能感兴趣的文章:Android应用开发SharedPreferences存储数据的使用方法Android 动画之TranslateAnimation应用详解Android 动画之ScaleAnimation应用详解Android开发中多进程共享数据简析Android 多进程资料总结Android 进程间通信实现原理分析Android应用程序四大组件之使用AIDL如何实现跨进程调用ServiceAndroid编程防止进程被第三方软件杀死的方法解析后台进程对Android性能影响的详解Android中应用多进程的整理总结


免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Android结束进程的方法详解

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Android结束进程的方法详解

本文实例讲述了Android结束进程的方法。分享给大家供大家参考,具体如下: 最近在做一个类似与任务管理器的东西,里面有个功能,可以通过这个管理器结束掉其他的进程。 在Android平台下,结束进程的方法还是比较多的。首先指明,此处的“结束
2022-06-06

linux结束进程的方法是什么

在Linux中,可以使用以下方法之一来结束进程:1. 使用kill命令:kill命令用于发送信号给指定进程。可以使用以下命令结束进程:```kill ```默认情况下,kill命令发送的是SIGTERM信号,这会请求进程正常退出。如果进程没
2023-08-25

Linux下结束进程的方法有哪些

这篇文章主要介绍了Linux下结束进程的方法有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。使用命令行或字符终端界面Ctrl + C在命令行中调用 gedit (如果您没
2023-06-27

详解Android进程保活的方法

关于 Android 平台的进程保活这一块,想必是所有 Android 开发者瞩目的内容之一。你到网上搜 Android 进程保活,可以搜出各种各样神乎其技的做法,绝大多数都是极其不靠谱。前段时间,Github还出现了一个很火的“黑科技”进
2022-06-06

python结束线程的方法有哪些

Python结束线程的方法有以下几种:1. 使用`threading`模块的`Thread`类提供的`join()`方法。调用该方法会阻塞主线程,直到指定的线程执行完毕。```pythonimport threadingdef my_fun
2023-08-24

Android编程实现AIDL(跨进程通信)的方法详解

本文实例讲述了Android编程实现AIDL(跨进程通信)的方法。分享给大家供大家参考,具体如下: 一. 概述: 跨进程通信(AIDL),主要实现进程(应用)间数据共享功能。 二. 实现流程: 1. 服务器端实现: (1)目录结构,如下图:
2022-06-06

Mac 上查看端口占用情况并结束进程的方法

标题:Mac 上查看端口占用情况并结束进程的方法 在 Mac 上,如果你想查看当前系统中哪些进程正在占用特定的端口,并且需要结束某个进程以释放端口,下面是一些方法可以帮助你完成这些任务。 步骤1:打开终端应用 在 Launchpad 或者
2023-08-16

win7任务管理器无法结束进程怎么解决

今天小编给大家分享一下win7任务管理器无法结束进程怎么解决的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。win7任务管理器
2023-07-01

java强制结束线程的方法是什么

在Java中,强制结束线程的方法有以下几种:1. 使用volatile变量:可以设置一个volatile类型的boolean变量,当需要结束线程时,将该变量设置为true,线程在执行过程中会不断地检查该变量的值,若为true,则退出线程。2
2023-08-24

java强行结束线程的方法是什么

Java中强行结束线程的方法是使用Thread类的interrupt()方法。该方法会向线程发送一个中断信号,如果线程处于阻塞状态,会抛出一个InterruptedException异常,否则线程的中断状态会被设置为true。被中断的线程可
2023-08-30

python中的psutil模块详解(cpu、内存、磁盘情况、结束指定进程)

这篇文章主要介绍了python中的psutil(cpu、内存、磁盘情况、结束指定进程),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
2023-05-17

详解android webView独立进程通讯方式

为什么需要将webView放在独立进程 webView 加载网页的时候可能占用大量内存,导致应用程序OOM。 webView 在访问结束的时候可以直接杀死该进程,防止内存泄漏。 webView 在崩溃的时候不影响主进程。webView
2023-05-30

Android工程:引用另一个Android工程的方法详解

现在已经有了一个Android工程A。我们想扩展A的功能,但是不想在A的基础上做开发,于是新建了另外一个Android工程B,想在B中引用A。 一个思路是把工程A做成纯Jar包,这样其他的工程就可以直接引用了。 但是,如果在工程A中用了R.
2022-06-06

Java获取Process子进程进程ID方法详解

这篇文章主要介绍了Java获取Process子进程进程ID方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
2022-12-30

Java判断线程是否结束的方法有哪些

小编给大家分享一下Java判断线程是否结束的方法有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!方法1通过Thread类中的isAlive()方法判断线程是否
2023-06-29

Android 杀死进程几种方法详细介绍

Android 杀死进程: 对于进程结束在开发APP应用当中还是有必要的,这里整理了三种方法,大家可以根据需求选用。 当应用不再使用时,通常需要关闭应用,可以使用以下三种方法关闭android应用: 第一种方法:首
2022-06-06

Android编程实现闹钟的方法详解

本文实例讲述了Android编程实现闹钟的方法。分享给大家供大家参考,具体如下: 在Android中,有一个闹钟的类,AlarmManager类,我们可以通过其来对系统内的通知进行操作! 本文用到了Service和Broadcast两个后台
2022-06-06

详解Android 进程间通信的几种实现方式

一、概述 由于应用程序之间不能共享内存。在不同应用程序之间交互数据(跨进程通讯),在Android SDK中提供了4种用于跨进程通讯的方式。 这4种方式正好对应于android系统中4种应用程序组件:Activity、Content Pro
2022-06-06

编程热搜

  • Android:VolumeShaper
    VolumeShaper(支持版本改一下,minsdkversion:26,android8.0(api26)进一步学习对声音的编辑,可以让音频的声音有变化的播放 VolumeShaper.Configuration的三个参数 durati
    Android:VolumeShaper
  • Android崩溃异常捕获方法
    开发中最让人头疼的是应用突然爆炸,然后跳回到桌面。而且我们常常不知道这种状况会何时出现,在应用调试阶段还好,还可以通过调试工具的日志查看错误出现在哪里。但平时使用的时候给你闹崩溃,那你就欲哭无泪了。 那么今天主要讲一下如何去捕捉系统出现的U
    Android崩溃异常捕获方法
  • android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
    系统的设置–>电池–>使用情况中,统计的能耗的使用情况也是以power_profile.xml的value作为基础参数的1、我的手机中power_profile.xml的内容: HTC t328w代码如下:
    android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
  • Android SQLite数据库基本操作方法
    程序的最主要的功能在于对数据进行操作,通过对数据进行操作来实现某个功能。而数据库就是很重要的一个方面的,Android中内置了小巧轻便,功能却很强的一个数据库–SQLite数据库。那么就来看一下在Android程序中怎么去操作SQLite数
    Android SQLite数据库基本操作方法
  • ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
    工作的时候为了方便直接打开编辑文件,一些常用的软件或者文件我们会放在桌面,但是在ubuntu20.04下直接直接拖拽文件到桌面根本没有效果,在进入桌面后发现软件列表中的软件只能收藏到面板,无法复制到桌面使用,不知道为什么会这样,似乎并不是很
    ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
  • android获取当前手机号示例程序
    代码如下: public String getLocalNumber() { TelephonyManager tManager =
    android获取当前手机号示例程序
  • Android音视频开发(三)TextureView
    简介 TextureView与SurfaceView类似,可用于显示视频或OpenGL场景。 与SurfaceView的区别 SurfaceView不能使用变换和缩放等操作,不能叠加(Overlay)两个SurfaceView。 Textu
    Android音视频开发(三)TextureView
  • android获取屏幕高度和宽度的实现方法
    本文实例讲述了android获取屏幕高度和宽度的实现方法。分享给大家供大家参考。具体分析如下: 我们需要获取Android手机或Pad的屏幕的物理尺寸,以便于界面的设计或是其他功能的实现。下面就介绍讲一讲如何获取屏幕的物理尺寸 下面的代码即
    android获取屏幕高度和宽度的实现方法
  • Android自定义popupwindow实例代码
    先来看看效果图:一、布局
  • Android第一次实验
    一、实验原理 1.1实验目标 编程实现用户名与密码的存储与调用。 1.2实验要求 设计用户登录界面、登录成功界面、用户注册界面,用户注册时,将其用户名、密码保存到SharedPreference中,登录时输入用户名、密码,读取SharedP
    Android第一次实验

目录