Android关于杀掉进程的方案

Android 一键清除后台进程实现详解 Android一键清除后台进程怎么实现?采用什么方法?通过本章你将一目了然 阅读详情

《风波·莫听穿林打叶声》—— 苏轼 〔宋代〕

三月七日,沙湖道中遇雨,雨具先去,同行皆狼狈,余独不觉。已而遂晴,故作此词。

莫听穿林打叶声,何妨吟啸且徐行。
竹杖芒鞋轻胜马,谁怕?一蓑烟雨任平生。
料峭春风吹酒醒,微冷,山头斜照却相迎。
回首向来萧瑟处,归去,也无风雨也无晴。

在这里插入图片描述


  1. 关于使用killBackgroundProcesses杀进程不生效的问题

  2. stackoverflow 关于 killBackgroundProcesses no working的讨论

  3. 关于使用forceStopPackage()方法杀应用的讨论-1

  4. 关于使用forceStopPackage()方法杀应用的讨论-2

killBackgroundProcesses()

结论:我们可以killBackgroundProcesses(pkgName) 来杀掉后台应用。(PS: 如果是前台应用,则可以先将其放到后台,然后调用killBackgroundProcesses(pkgName)来杀掉应用)

killBackgroundProcesses(pkgName) 需要配置权限:


    <uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES" />
    

forceStopPackage()

结论:该方法不推荐使用。其有如下几个要点:

 /**
     * @see #forceStopPackageAsUser(String, int)
     * @hide
     */
    @SystemApi
    @RequiresPermission(Manifest.permission.FORCE_STOP_PACKAGES)
    public void forceStopPackage(String packageName) {
        forceStopPackageAsUser(packageName, mContext.getUserId());
    }

但是我们在源码中看到:

  @hide
 @UnsupportedAppUsage
    public void forceStopPackageAsUser(String packageName, int userId) {
        try {
            getService().forceStopPackage(packageName, userId);
        } catch (RemoteException e) {
            throw e.rethrowFromSystemServer();
        }
    }

如果我们需要调用forceStopPackageAsUser(),首先需要获取userId.我们从forceStopPackage()方法中可以发现userid是从Context中获取的。

 // Context.java
 /**
     * Get the user associated with this context
     * @hide
     */
    @UnsupportedAppUsage
    @TestApi
    public @UserIdInt int getUserId() {
        return android.os.UserHandle.myUserId();
    }

由于该方法是被 @hide 修饰的,意味着我们可以通过反射进行调用。

观察这几个方法,我们会发现几个注解:@hide , @SystemApi
关于这两者的区别:@SystemApi, @PrivateApi and @hide的区别

手机管理应用研究【4】—— 手机加速篇 欢迎转载,转载请注明:http://blog.youkuaiyun.com/zhgxhuaa 说明 在上一篇中介绍了“垃圾清理”,在系统优化中有一个功能往往是与垃圾清理分不开的,那就是“手机加速”。目前流行的管理软件中以及网络上并没有明确的定义什么叫“垃圾清理”什么叫“手机加速”。结合上一篇的“垃圾清理”这里统一做一个在本系列文章中的定义: n 垃圾清理:在本系列文章中认为扫描和清理 阅读详情

相关推荐

【打包问题】React Native 下安卓环境打包、运行后不更新

目录: 版本说明 问题原因 解决办法 一、版本说明 本机系统: Mac Android studio: 3.6.2 "react": "16.8.3", "react-native": "0.59.9" 二、问题原因 2.1、修改项目代码后,Android Studio 中运行、打包后未更新 三、解决办法,参考这里 3.1、原因是 8081 端口被占用,kill 所有 8081 端口的其他程序,再重新运行项目即可 项目根目录下运行此命令 react-native bundle --platfo

窝窝头的博客 1447

关于killBackgroundProcesses()函数,杀不死进程的解释

最近在做内存加速性质的APP,发现用killBackgroundProcesses()函数来杀一些进程总是杀不死。 经人提醒得知,不同进程的程序可能有相同的UID:比如微信,一般而言,微信有两个进程在跑: com.tencent.mm 和 com.tencent.mm:push 无论你单独杀死哪个进程,另外一个进程在监测到兄弟进程被杀死后,就会立即启动被杀死的进程。 所以单独杀死其中一个是

Lin00Kun11的专栏 8299

Android进程生命周期管理与优雅退出的最佳实践

Android系统采用独特的进程管理机制,基于组件状态划分进程优先级(前台、可见、服务、后台、空进程),通过"低内存杀手"自动管理进程生命周期。开发者应避免主动结束进程,这会导致用户体验破坏、违反设计原则和性能反优化。正确做法是优雅管理Activity生命周期,使用Application类维护全局状态,合理处理内存不足和异常崩溃情况。关键点包括:1)遵循系统自动管理机制;2)避免强制终止进程;3)实现资源释放和状态保存;4)优化异常处理流程。

学无止境 2061

android forceStopPackage 强制关闭其他程序-系统签名

在非ROOT的情况下,强制关闭其他程序,使自己的程序总是处于前台,可以把关闭其他程序或是进程的方法放在BaseActivity的onStop方法中,同时也可以放在一个定时方法中。强制关闭其他程序基本都用的killBackgroundProcesses或是forceStopPackage。其中killBackgroundProcesses使用起来更简单一些,不需要系统签名,但是缺点是不能关闭其他前台程序,仅对后台有效,并且系统会在需要的时候再次重启被我们杀死的进程,所以如果对关闭前台程序这一点没有...

小二的博客 9622

解决Unity中的mUnityPlayer.quit()方法导致一系列问题

如果做过Unity并且与Android打过交道的人,相信被Unity某些特性弄得没有脾气,比如说有个mUnityPlayer.quit()方法,这个方法在UnityPlayerActivity类的onDestroy方法中是这样的写的: // Quit Unity @Override protected void onDestroy() { mUnityPlayer.quit();

Yong Ledo的博客 4570

010Editor实战:5分钟破解Zip伪加密文件(附BUUCTF真题解析)

本文详细介绍了如何使用010Editor快速破解Zip伪加密文件,包括BUUCTF真题的完整解析。通过修改关键字节,轻松解除伪加密状态,适用于CTF竞赛和实际工作场景,提升文件处理效率。

weixin_29325007的博客 326

杀掉顽固的android进程

为了节省内存,故需要在android的apk任务完成后将服务杀掉,可是最近遇到了一个怎么也杀不掉的进程。 系统升级的apk主线程是一个服务,退出的时候会执行this.stop(),进而调到onDestroy()函数,在该函数中执行android.os.Process.killProcess(android.os.Process.myPid());会将进程杀掉。 理论上如此,然而我发现怎么杀都杀...

weixin_33975951的博客 122

【Unity+HoloLens2】从0开始在HoloLens2部署MR工程

HoloLens2部署的权威教程在微软的官方文档中,但有些问题其实官方文档并没有列出,所以在实际开发过程中如果遇到bug,就需要自身或者前人的经验去解决。比如:对于Hololens2来说,在VS中需选择ARM64而不是x86。部署需要有良好的网速;工程打包出来的文件路径和工程路径有关联,如果这两个路径不匹配,部署就会失败。部署后打不开可能是因为Unity中未添加需要部署的场景,在Build Settings中点击Add open Scenes。...

fmxs 4571

android内存优化那些事 --- LowmemoryKiller

概述 lowmemorykiller的作用就是当内存比较紧张的时候去及时杀掉一些对用户来说不那么重要的进程,回收内存,保证手机的正常运行。 安卓平台lowmemorykiller机制演进可以描述为:从早期的Kernel space Lowmemorykiller 到UserSpace Lowmemorykiller (监听vmpressure),再到UserSpace Lowmemorykiller (监听PSI)。 内核空间LMK Kernel LMK相关概念 • /sys/module/lo.

buhui912的专栏 5368

5个免费股票数据API实测对比:从AkShare到BaoStock,哪个最适合你的AI量化项目?

本文深度评测了AkShare、BaoStock、yfinance、Alpha Vantage和EOD Historical Data这五个免费股票数据API,从数据质量、覆盖范围、更新频率、稳定性及易用性进行对比。针对AI量化项目,文章提供了详细的选型策略,帮助开发者根据项目阶段与需求,精准选择最适合的数据源,并强调了多源验证与数据清洗的重要性。

weixin_29290947的博客 5092

手把手教你逆向抖店滑块验证码:从抓包到生成captchaBody的完整流程(附Python复现代码)

本文详细解析了抖店滑块验证码的逆向过程,从抓包分析到参数生成,最终用Python完整复现验证流程。涵盖关键接口分析、指纹参数生成、轨迹加密逻辑及核心加密算法实现,帮助开发者突破抖店的多重安全机制,实现高效的人机验证绕过。

weixin_30681121的博客 424

Android记一次BackcarService(倒车服务)被杀掉的bug

1.bug描述 开机启动了BackcarService,时刻监测倒车,可是dqa测试一阵子后,有概率性测出来倒车无反应,也看了无反应的日志,BackcarService根本无日志输出,看样子像是service挂掉了一样。 2.分析 应为dqa抓的日志基本上都是倒车无反应后的日志,所以之前一直怀疑是机器性能问题,主动把BackcarService杀掉了,再加上问题不是太好复现,所以一直没有解决。 再...

geniushorse的博客 1037

无人机飞控算法开发实战:从零到一构建企业级飞控系统

本文系统介绍了无人机飞控算法开发的完整流程,包括飞行动力学模型建立、传感器校准与数据融合、主流控制算法实现(PID、ADRC、EKF)以及企业级飞控系统架构设计。通过结合开源飞控框架(如PX4)和实际工程经验,提供了完整的代码实现示例,帮助学者从零开始掌握无人机飞控开发的核心技术。文中详细讲解了四旋翼无人机的动力学模型、传感器校准方法、EKF状态估计算法、PID和ADRC控制算法的实现,以及MAVLink通信协议的集成。最后,总结了完整的飞控系统开发流程和未来发展趋势。

全栈 3403

[Android问答] 如何实现“退出应用”功能?

刚从桌面应用开发转做手机开发的同学常常被这个问题困扰——用户按下Home键后,应用不是“完全退出”而是“运行在后台”,它仍然占用着系统资源,这么多后台运行的应用必然导致系统变慢,是不是应该在我的应用里给用户提供一个“退出菜单”或“退出按钮”呢? 我在Android开发文档里暂时没有找到关于这个问题的解释,但经过在网上调查很多资料以后,我认为答案是比较明显的:不应提供“退出应用”功能。 虽然...

weixin_34362875的博客 115

Aspen Plus下载教程Aspen Plus V14 保姆级安装步骤(附安装包)

26、在WlmAdmin界面中,依次点击【Subnet Servers】、【admin】、【Add Feature】、【From a File】、【To Server and its File】。35、在产品选择页面,勾选需要安装的所有产品(重要:不要勾选【Aspen Online(Plant Data)】),然后点击【File Location】。回到桌面,点击任务栏的【开始菜单】,在【所有应用】中找到【Aspen Plus V14】软件图标,将其拖到桌面上创建快捷方式。9、这里可以更改软件的安装位置。

ps_xiaowang的博客 1万+

1️⃣ Coze智能体基础入门教学(2025年全新版本)

不妨设想一下,倘若我们能够打造出一个数字助手,它不但能精准洞悉我们的需求,更可以独立思索、学习以及付诸行动,这便是 AI Agent 的基础理念。它恰似计算机世界里的 “智慧精灵”,能够感知周遭环境、做出判断并采取行动。AI Agent 的发展之路精彩纷呈。它走过了三个重要阶段:起初,它犹如一个被规则束缚的机器人,只能按预设好的指令开展工作。接着,它学会运用统计学方法,通过分析数据来做决策,变得越发灵活。到如今,凭借深度学习技术,它已经能够像人类一样去学习复杂的任务了。

李同学Lino的博客 4087

问题:在运行android的项目时出现的异常

问题:在运行android的项目时出现的异常 The connection to adb is down, and a severe error has occured. [2010-03-11 09:36:56 - HelloOPone] You must restart adb and Eclipse. [2010-03-11 09:36:56 - HelloOPone] Pleas

competerH_programing的专栏 1905

AI人工智能 Agent:在仓储物流中的应用

AI人工智能 Agent:在仓储物流中的应用 1. 背景介绍 1.1 问题的由来 仓储物流行业是全球经济运行的基石之一,涉及商品的存储、运输、分拣和配送等多个环节。随着电子商务的普及和消费者对物流速度和精确性的要求不断提高,仓储物流

AGI×大数据,开启智能时代的认知跃迁;解码AGI,赋能数据驱动的智能革命。 863

android程序启动效果,Android 冷启动秒开实现

【APP冷启动秒开】:冷启动是指应用杀掉进程时的启动;秒开是指点击桌面APP的图标后立即显示启动页面(PS:这个启动页面不能是白屏、黑屏或长时间页面不显示无反应)。【优化效果图】 【对比效果图】 原因在给出实现方案之前,先解释两个问题:1、什么是Android的冷启动时间?冷启动时间是指用户从桌面点击APP的那一刻起到启动页面的Activity调用onCreate()方法之间的这个时间段(通俗点...

weixin_29250403的博客 309

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

解决eclipse老是检测不到手机设备方法

A 1,关闭eclipse并在进程中杀掉adb.exe,然后重启。 2,如有真机连接,拔掉真机,重复1的步骤, 3,关掉eclipse,然后在命令行运行如下命令       adb kill-server       adb start-server       然后重启eclipse B.自己遇到的问题,原来是企鵝的"手机管家"作怪 解决:进程中发现了一个tadb进程

haidexiaochuan的专栏 2317

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

The connection to adb is down, and a severe error has occured

遇到问题描述: 运行android程序控制台输出: [2015-04-08 11:10:32 - MyWellnessTracker] The connection to adb is down, and a severe error has occured. [2015-04-08 11:10:32 - MyWellnessTracker] You must restart adb

让 学习 成为一种 习惯 ( 谭祖爱 & 技术博客 ) 2600

Android性能案例分析

优先使用考虑使用Winscope 寻找原因?为啥看不到壁纸画面,是什么时机设置的图层参数无法看到壁纸?# emulator -wipe-data // 模拟器恢复出厂,黑5-6s。一、如何避免重要app进程被系统lmk-lowmemorykiller杀掉。常见的低内存查杀的解决方案就是加白名单,避免系统省点精灵查杀。修改方案1:bootanimation延长消失时间。问题就是规避了问题,但是开机动画时间较长。# emulator // 正常启动。操作要求:恢复出厂设置,启动模拟器。

sxwn123的专栏 307

Android冷启动与热启动概念

Android冷启动与热启动概念 冷启动 什么是冷启动 Android中的冷启动,使用直白的话就是: 当手机 重启 ,点击桌面图标启动应用的过程就是冷启动 未启动手机,长时 未使用,应用被 kill 后,此时点击桌面图标启动应用的过程 冷启动的表现形式 未做处理的情况 点击桌面图标后没有反应,没有瞬间打开应用,也就是没有马上看到应用打开 点击桌面图标后会显示 黑屏 或者 白屏 , 没有及时渲...

Android唐浮的专栏 1353

Modeule AppRegistry is not a registered callable module(call runApplication)

Modeule AppRegistry is not a registered callable module(call runApplication) 在RN项目启动时,报错如上 杀掉所有node进程 ; cmd命令执行, npm start 3.启动项目 react-native run-ios // 或者 react-native run-android ...

风雨飘飘飘啊飘的博客 1872

解决Adb无法多开的问题 flutter devices No connected devices found

下载好后把adb.exe,AdbWinApi.dll,AdbWinUsbApi.dll这三个文件复制到android sdk位置\platform-tools替换。如果提示正在使用则把adb.exe的进程杀了再替换。换成1.0.40成功解决。

qq_15038747的博客 333

DDMS files not found

在eclipse中启动新建的android项目的时候,控制台提示如图: 方法1.cmd中adb kill-server,然后adb -startserver 方法2.方法1不管用,那么在任务管理器中杀死adb.exe,然后重启Eclipse。方法3.方法1和2都不管用,那么查看最后一句报错中:platform-tools中是否有adb.exe(我的错误就是在相关路径下...

748
上一篇: 小米手机MIUI优化的影响
下一篇: Ubuntu上的常用软件配置
Bert.King
博客等级 码龄15年 280粉丝 151原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值