android提示程序正在执行,Android中获取正在运行的进程(一)

关于android中应用程序正在运行的进程有下面几种:1-包含services的进程,2-不包含services的进程,3-杀死应用时有些进程被init回收(类似于僵尸进程),ppid变为1,无法通过android 应用层代码获得的进程。这些进程可能是应用的重启进程,导致应用重启,也就是我们做了杀死应用进程的操作后,发现一段时间后,应用又重新启动的现象。

一、对于前两者,可以调用androud系统函数来获得,示例如下:

ActivityManager mActivityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE) ;

//获得系统运行的进程

List appList1 = mActivityManager

.getRunningAppProcesses();

for(RunningAppProcessInfo running : appList1) {

System.out.println(running.processName);

}

System.out.println("================");

//获得当前正在运行的service

List appList2 = mActivityManager

.getRunningServices(100);

for(ActivityManager.RunningServiceInfo running : appList2) {

System.out.println(running.service.getClassName());

}

System.out.println("================");

//获得当前正在运行的activity

List appList3 = mActivityManager

.getRunningTasks(1000);

for(ActivityManager.RunningTaskInfo running : appList3) {

System.out.println(running.baseActivity.getClassName());

}

System.out.println("================");

//获得最近运行的应用

List appList4 = mActivityManager

.getRecentTasks(100,1);

for(ActivityManager.RecentTaskInfo running : appList4) {

System.out.println(running.origActivity.getClassName());

}

二、对于第三种,我们都知道在linux shell中输入ps命令,可以查看所有运行的进程,

root@android:/ #

root@android:/ # ps

USER     PID   PPID  VSIZE  RSS     WCHAN    PC         NAME

root      1     0     412    244   c00cf1c0 0000ffe4 S /init

root      2     0     0      0     c0044560 00000000 S kthreadd

root      3     2     0      0     c002eae4 00000000 S ksoftirqd/0

root      6     2     0      0     c007aaa4 00000000 S migration/0

root      7     2     0      0     c007dfb0 00000000 S watchdog/0

root      12    2     0      0     c003fd14 00000000 S khelper

root      13    2     0      0     c003fd14 00000000 S netns

.......

root      17    2     0      0     c003fd14 00000000 S suspend_sys_syn

u0_a55    16896 1413  545192 52208 ffffffff 4010eea4 S com.tencent.mm

u0_a55    16934 1413  526176 34352 ffffffff 4010eea4 S com.tencent.mm:push

u0_a37    17719 1413  512816 30040 ffffffff 4010eea4 S com.nufront.NufrontTestDemo

u0_a25    17835 1413  487536 22400 ffffffff 4010eea4 S com.android.smspush

root      18674 1432  928    544   c0011ad4 40160934 S /system/bin/sh

root      18688 18674 1236   460   00000000 400bfd38 R ps

再执行kill命令,就可以杀死对应的进程

root@android:/ # kill  16896

再有,如果执行ps | grep试试看:

root@android:/ #

root@android:/ #ps | grep tencent

u0_a55    16896 1413  545192 52208 ffffffff 4010eea4 S com.tencent.mm

u0_a55    16934 1413  526176 34352 ffffffff 4010eea4 S com.tencent.mm:push

root@android:/ #

在android中有一个函数是有kill命令功能的: Process.killProcess(int pid);

所以,我们只需要根据package name,找到没有被杀死的进程的进程号,再调用killprocess()函数,就可以杀死一直杀不死的进程了。可参考下面的代码:

java.lang.Process process=null;

Runtime rt=Runtime.getRuntime();

System.out.println("start");

try {

process=rt.exec("busybox pgrep nuomi");

InputStream is=null;

InputStreamReader isr=null;

BufferedReader buffer=null;

String line=null;

String xxx = null;

is=process.getInputStream();

isr=new InputStreamReader(is);

buffer=new BufferedReader(isr);

while((line=buffer.readLine())!=null){

System.out.println(line+"----------");

Process.killProcess(Integer.valueOf(line));

xxx = line;

}

System.out.println(xxx+"***********");

} catch (IOException e) {

e.printStackTrace();

}

System.out.println("end");

三、另外一些关于应用程序的函数可参考下面

推荐方法

1、

//全部程序包

private void queryFilterAppInfo() {

PackageManager pm = this.getPackageManager();

// 查询所有已经安装的应用程序

List

listAppcations = pm.getInstalledApplications(PackageManager.GET_UNINSTALLED_PACKAGES);// GET_UNINSTALLED_PACKAGES代表已删除,但还有安装目录的

for (ApplicationInfo app : listAppcations) {

AppInfo appInfo = new AppInfo();

appInfo.setAppLabel((String) app.loadLabel(pm));

appInfo.setAppIcon(app.loadIcon(pm));

appInfo.setPkgName(app.packageName);

mlistAppInfo.add(appInfo);

}

}

2、

// 获得所有系统的

public void querySysAppInfo()

{

PackageManager pm = this.getPackageManager();

Intent intent = new Intent(Intent.ACTION_MAIN, null);

intent.addCategory(Intent.CATEGORY_LAUNCHER);

// 通过查询,获得所有ResolveInfo对象.

List resolveInfos =

pm.queryIntentActivities(intent,

PackageManager.MATCH_DEFAULT_ONLY);

for (ResolveInfo reInfo : resolveInfos) {

String activityName = reInfo.activityInfo.name; //

获得该应用程序的启动Activity的name

String pkgName = reInfo.activityInfo.packageName; // 获得应用程序的包名

String appLabel = (String) reInfo.loadLabel(pm); //

获得应用程序的Label

Drawable icon = reInfo.loadIcon(pm); // 获得应用程序图标

System.out.println(appLabel + " activityName---" +

activityName

+ " pkgName---" + pkgName);

}

}

3、  //最简单的方法

public  boolean appIsInstalled(String

packageName){

try {

PackageManager pm = this.getPackageManager();

pm.getPackageInfo(packageName,

PackageManager.GET_ACTIVITIES);

System.out.println("已安装"+packageName);

} catch (NameNotFoundException e) {

System.out.println("没有安装"+packageName);

return false;

}

return true;

}

4、// 获得所有包信息

public void getInstallPackage() {

PackageManager packageManager =

this.getPackageManager();

List

packageInfoList=packageManager.getInstalledPackages(0);

mlistAppInfo.clear();

for (int

i=0;i

{

PackageInfo pi = packageInfoList.get(i);

System.out.println((i+1)+":"+pi.toString());

}

}

5、  //直接启动方法

public  void srartApp(String

packageName){

Intent intent =

this.getPackageManager().getLaunchIntentForPackage(packageName);

if(intent!=null)

//已安装包 直接启动

startActivity(intent);

}

参考:androidbin.iteye.com/blog/1594908,blog.sina.com.cn/s/blog_3e333c4a01015v3e.html等,谢谢!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/574248.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

jta 知识

JTA知识(转载原文地址:http://blog.csdn.net/it_man/article/details/7230215) Java Transaction API,译为Java事务API。JTA允许应用程序执行分布式事务处理——在两个或多个网络计算机资源上访问并且更新数据。JTA主要用于分布式…

android l usb调试,你居然还不会手机usb调试?5个方法,让你轻松学会设置!

原标题:你居然还不会手机usb调试?5个方法,让你轻松学会设置!最近有位朋友将手机连接电脑的时候,遇到了提示打开手机的USB调试模式,却不知道怎么操作。其实,不同手机的usb调试打开的方式都会有所…

深入沟通的重要性——《大道至简》第四章读后感

我们都知道,一个新发明如果不被人们所需要,那只是一个失败品。一篇文章的观点如果不被人们所接受,那么就算文笔再好,也只是一张废纸。同样的,一个与客户需求不符的程序,哪怕它的架构再好,都只是…

鸿蒙os芯片,没有了芯片,华为能靠鸿蒙OS系统打出差异化吗?

原标题:没有了芯片,华为能靠鸿蒙OS系统打出差异化吗?华为今天要和大家说的手机产品是华为,在目前的市场中,华为手机的影响力是非常大的,并且获得了十分不错的销量,甚至在最近一段时间销量超过三…

html5 canvas 不兼容safari浏览器_HTML5简介

HTML5 是继 HTML4.01 和 XHTML1.0 之后的超文本标记语言的最新版本。它是由一群自由思想者组成的团队设计出来,并最终实现多媒体支持、交互性、更加智能的表单,以及更好的语义化标记。HTML5 并不仅仅是 HTML 规范的最新版本,而是一系列用来制…

html5置顶标签css样式,html5 header标签 html header css布局教程 /header

在HTML5版本之前习惯使用div标签布局网页,在HTML5在DIV标签基础上新增header标签元素。也叫“”头部标签。以前我们在div css布局中常常把网页大致分为头部、内容、底部。对于大结构我们常常使用div里加id进行布局。而头部常常使用正应为大家公认html布局中对“head…

DML数据操作语言练习

--创建表T_HQ_BM2 --create table t_hq_bm2 as select * from t_hq_bm; commit;--添加行内容 --insert into t_hq_bm2 values (107,研发部,147258369); commit;--删除部门编码为107的行 --delete t_hq_bm2 where bumenbm 107; commit;--添加行内容 --insert into t_hq_bm2 (bu…

第八届育才杯机器人比赛_赛场、名单公布!南海区第八届“献血者杯”羽毛球公开赛“羽”你相约本周六...

主办单位:南海区献血办、南海血站协办单位:南海区羽毛球协会为进一步扩大无偿献血宣传,感恩南海区献血者,活跃无偿献血者的文体生活,打造一个南海区无偿献血者交流的平台,共同营造“运动、健康、献血、快乐…

2021届安徽高考成绩查询,安徽2021年高考成绩什么时候公布

据安徽省教育招生考试院透露,安徽预计将于6月23日公布各批次录取分数线、考生成绩。2021年安徽高考成绩查询入口2021年高考录取方法1、普通高校的招生录取工作在教育部和省高校招生委员会的领导下,由省考试院组织实施。2、省高校招生委员会根据当年高校在…

BroadcastReceiver 广播机制详解

BroadcastReceiver也就是“广播接收者”的意思,顾名思义,它就是用来接收来自系统和应用中的广播。 在Android系统中,广播体现在方方面面,例如当开机完成后系统会产生一条广播,接收到这条广播就能实现开机启动服务的功能…

会话管理 轻量php框架_SpringSecurity+JWT权限管理训练营-1基于RBAC模型的权限管理系统...

1.什么是权限管理系统?权限管理是一个几乎所有后台系统的都会涉及的一个重要组成部分,可以说是后台项目的基本功,主要目的是对整个后台管理系统进行权限的控制,而针对的对象是员工,避免因权限控制缺失或操作不当引发的…

2021宣城职业技术学院对口高考成绩查询,2021年宣城职业技术学院高考录取通知书查询 通知书什么时候可以收到...

高考志愿填报后最重要的一件事情就是高考录取通知书的查收了,因为录取通知书才是证明你被录取的有效方式。那么很多考生及家长最关心怎么查询宣城职业技术学院录取通知书?宣城职业技术学院录取通知书寄到哪里了?本文大风车网小编为你整理了关…

iOS 谓词的使用

OC中的谓词操作是针对于数组类型的,他就好比数据库中的查询操作,数据源就是数组,这样的好处是我们不需要编写很多代码就可以去操作数组,同时也起到过滤的作用,我们可以编写简单的谓词语句,就可以从数组中过…

multisim秒信号发生器_失联50年的卫星突然出现,莫名向地球发送信号,究竟谁在操控?...

大不列颠无线电学会(RSGB)接到英国康沃尔郡的业余无线电天文爱好者菲尔威廉姆斯(无线电呼叫代号:G3YPQ)的报告,他在2012年12月18日的一次惯例搜索轨道卫星信号的任务中突然搜到了一个237MHZ,每隔4秒重复一次的信号,很明显这是一个…

html 百度地图显示轨迹,百度地图,地图轨迹

百度地图,记录行动轨迹:效果图:上代码:body,html,#allmap {width: 100%;height: 100%;overflow: hidden;margin: 0;font-family: "微软雅黑";}单个标注点沿直线的轨迹运动// 百度地图API功能var map new BMap.Map(&quo…

win10微软图标点击无反应_win10开始菜单,不出来,任务栏右击无反应

使用【win】【R】快捷键打开系统的【运行】;输入【powershell】,按下【确定】运行,然后复制一行命令,点击回车键运行等待命令运行完成之后就可以了。以下是详细介绍:1、在键盘上按下【win】【R】键,使用快捷…

计算机平面设计专业有哪些课程,计算机平面设计专业课程有哪些?

说到计算机平面设计专业,现在也有很多同学都想了解一下这个专业,而且现在也有不少学校都开设有计算机平面设计专业,那么计算机平面设计专业课程有哪些?下面大家就跟着小编一起去了解一下吧。基础课程平面构成,色彩构成&#xff0…

列注释_机器学习 Pandas 03:基础 前16题 ( 带答案、注释 )

13. 字符串处理方法s pd.Series([A, B, C, Aaba, Baca, np.nan, CABA, dog, cat]) s.str.lower()# 对于Series对象,在其str属性中有着一系列的字符串处理方法。 # 就如同上段代码一样,能很方便的对array中各个元素进行运算。 # 值得注意的是&#xff0c…

域中计算机与用户,域内计算机和用户获取实现vbs代码

显示当前域内所有计算机名称及数目Const ADS_SCOPE_SUBTREE 2Set objRootDSE GetObject("LDAP://rootDSE")strDomain ObjRootDSE.Get("defaultNamingContext")Set objConnection CreateObject("ADODB.Connection")Set objCommand CreateObj…

HDU1174(空间点到直线的距离,用叉积)

爆头 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 2002 Accepted Submission(s): 868 Problem Descriptiongameboy是一个CS高手,他最喜欢的就是扮演警察,手持M4爆土匪的头。也许这里有…