服务管理类-----ActivityManager

ndroid.app.ActivityManager

这个类主要用来管理所有设备上的Activities。

权限:android.permission.GET_TASKS

方法:| 返回类型     方法|

1.List<ActivityManager.RecentTaskInfo>       getRecentTasks(int maxNum, int flags)

返回用户最近使用过的应用程序信息集合。第一个参数是最大数量,第二个参数在API11前只有ActivityManager.RECENT_WITH_EXCLUDED。这个方法以后可能会被废弃,谷歌推荐用来debug用。

(1) RecentTaskInfo类,主要有些字段

1.1 Intent      baseIntent   得到能跳转到这个Task的Activity,即能通过这个Intent启动这个Intent指向的程序。

1.2  int           id                    得到这个Task的标识,如果是-1,则标识这个程序没启动,其他数字表示启动了。

1.3  int           persistentId  任务的唯一值。

1.4  Intent     baseIntent    启动任务的Intent

任务栏(长按Home键或者Menu键或者点击任务键)里面的任务主要就是靠这个方法获取的。

[java] view plaincopy

  1. final List<ActivityManager.RecentTaskInfo> recentTasks =
  2. am.getRecentTasks(MAX_TASKS, ActivityManager.RECENT_IGNORE_UNAVAILABLE);

点击启动任务

[java] view plaincopy

  1. if (ad.taskId >= 0) {
  2. // This is an active task; it should just go to the foreground.
  3. am.moveTaskToFront(ad.taskId, ActivityManager.MOVE_TASK_WITH_HOME,
  4. opts);
  5. } else {
  6. Intent intent = ad.intent;
  7. intent.addFlags(Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY
  8. | Intent.FLAG_ACTIVITY_TASK_ON_HOME
  9. | Intent.FLAG_ACTIVITY_NEW_TASK);
  10. if (DEBUG) Log.v(TAG, "Starting activity " + intent);
  11. context.startActivityAsUser(intent, opts,
  12. new UserHandle(UserHandle.USER_CURRENT));
  13. }

滑动删除任务(hide方法,需系统权限android.permission.REMOVE_TASKS)

[java] view plaincopy

  1. am.removeTask(ad.persistentTaskId, ActivityManager.REMOVE_TASK_KILL_PROCESS);

设置中强行停止应用(hide,需要非public权限)

[java] view plaincopy

  1. ActivityManager am = (ActivityManager)getActivity().getSystemService(
  2. Context.ACTIVITY_SERVICE);
  3. am.forceStopPackage(pkgName);

2.List<ActivityManager.RunningAppProcessInfo>           getRunningAppProcesses()

返回设备上正在运行的程序的进程集合。

(1)RunningAppProcessInfo类,主要有些字段

1.1 int     importance   这个字段的值如果为IMPORTANCE_FOREGROUND (100)时表示为前段运行的进程,为IMPORTANCE_BACKGROUND(400)表示后台运行。其值还有一些其他的。

1.2 int     importanceReasonCode  对进程进行解释的字段,有3个值 REASON_UNKNOWN(0) 、REASON_PROVIDER_IN_USE(1)、REASON_SERVICE_IN_USE(2)。分别表示没原因、程序中的content provider被其他程序使用、与前一个理由一样。

1.3 int    importanceReasonPid   当 importanceReasonCode  的值不为0时这个字段代表1.2中其他程序的PID值,否则值为0。

1.4 ComponentName     importanceReasonComponent     当 importanceReasonCode  中值不为0时,这个字段代表1.2中其他程序的 ComponentName,否则为null。

1.5 int     pid    进程的PID值。

1.6 int   uid    user id.

1.7  String    processName   进程名,实际等于包名(content provider免疫)。

1.8 String[]     pkgList    程序内所有主包,这个测试出来,一般程序都只有一个元素,但系统自带的程序并且有content provider的有几个包。

3 List<ActivityManager.RunningTaskInfo>        getRunningTasks(int maxNum)

返回正在运行中的程序,参数为返回的最大个数,返回的顺序为  最近打开的程序,即优先返回最新使用的程序。返回值可能为空。

(1)RunningTaskInfo类,主要提供字段

1.1 ComponentName        baseActivity    代表登陆的Activity的 ComponentName,即可以用这个返回值启动这个所代表的程序。

1.2  int               id                    A unique identifier for this task.

1.3  int         numActivities     Number of activities in this task.

1.4
 int          numRunning         Number of activities that are currently
running (not stopped and persisted) in this task.

1.5 ComponentName         topActivity    存在栈顶的Activity所代表的 ComponentName。用户可以用这个方法得到现在正在显示的Activity的 ComponentName。

[java] view plaincopy

  1. ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
  2. ComponentName cn = am.getRunningTasks(1).get(0).topActivity;

4.void    killBackgroundProcesses (String packageName)

杀死后台进程,参数为要被杀的程序的(主)包名。需要权限android.permission.KILL_BACKGROUND_PROCESSES。

5. List<ActivityManager.RunningServiceInfo>           getRunningServices(int maxNum)

得到所有正在运行的service。

(1)RunningServiceInfo类,主要提供字段。

1.1  long       activeSince    第一次启动这个service到现在所过的时间段。

1.2  int           pid              进程的PID

1.3  int   uid    user id.

1.4  String      process    进程名(包名?)。

1.5  long     lastActivityTime  最后一次激活Service到现在的时间

1.6 ComponenName     service    得到这个Service的组件名,就是能通过这个启动service

1.7  long   restarting     这个字段的值如果不是0,那么现在这个service还没启动,将在返回值的时间段过后自启动。

6. void    restartPackage (String packageName)

现在这个方法等于方法4了,调用这个方法等于在调用方法4.

时间: 2024-07-31 11:36:56

服务管理类-----ActivityManager的相关文章

服务管理类-----KeyguardManager

android.app.KeyguardManager类用于对Keyguard进行管理,即对锁屏进行管理 Class Overview Class that can be used to lock and unlock the keyboard. Get an instance of this class by calling getSystemService(java.lang.String) with argumentKEYGUARD_SERVICE. The Actual class to

服务管理类---------packageManager

packageManager是管理应用程序包,用来获取应用程序的信息 packageManager查找应用程序的信息都是通过查找该应用程序的配置文件,通过遍历该文件的节点 引入:AndroidManifest.xml文件节点说明: PackageManger 类 说明: 获得已安装的应用程序信息 .可以通过getPackageManager()方法获得. 常用方法: public abstract PackageManager getPackageManager() 功能:获得一个Package

服务管理类-----SMSManager

SmsManager公有方法: ArrayList<String> divideMessage(String text)  当短信超过SMS消息的最大长度时,将短信分割为几块.  参数:text——初始的消息,不能为空  返回值:有序的ArrayList<String>,可以重新组合为初始的消息 static SmsManager getDefault()  获取SmsManager的默认实例.  返回值:SmsManager的默认实例 void SendDataMessage(S

服务管理类------TelephonyManager

/****@author dingran*创建日期 2010-4-29 下午05:02:47**/package net.sunniwell.app;import android.app.Activity;import android.os.Bundle;import android.telephony.CellLocation;import android.telephony.PhoneStateListener;import android.telephony.TelephonyManage

安全类工具制作第006篇:服务管理器

一.前言 服务是一种在操作系统启动的时候就会启动的进程.在操作系统启动时会有两种程序随着系统启动,一种是普通的Win32程序,另一种则是驱动程序.正是基于服务的这种特性,恶意程序往往也会将自身伪装成正常的服务来实现自启动.因此在反病毒的过程中,还是很有必要对服务项进行查看并管理的. 服务管理器的开发原理与之前所讨论的注册表管理器和进程管理器是类似的,主要也是枚举服务并将其显示在"List Control"控件中.而对于服务的管理,是通过服务相关的API函数来实现的.有了本系列之前几篇文

下载的管理类MyDownloadManager

import android.content.Intent; import android.net.Uri; import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; import java.util.ArrayList; import java.util.HashMap; /** * 下载的管理类 */ public class MyDownloadManager { public sta

【C#】分享基于Win32 API的服务操作类(解决ManagedInstallerClass.InstallHelper不能带参数安装的问题)

注:这里的服务是指Windows 服务. 市面上常见的安装一个服务的方法大概有这么几种: 用Process类调用sc.exe.Installutil.exe等外部工具进行安装.极不推荐,须知创建一个进程开销不小,并且依赖外部工具有损程序健壮性 使用TransactedInstaller和AssemblyInstaller安装类进行安装.不推荐,既然都用托管方法,何不用更好的方法呢 用ManagedInstallerClass.InstallHelper进行安装.这个我认为是托管方法中首选的方法,

IT大数据服务管理高级课程

IT大数据服务管理高级课程(IT服务,大数据,云计算,智能城市) 适合人群:初级 课时数量:6课时 用到技术:大数据,云计算 涉及项目:IT服务,大数据,云计算 咨询qq:1840215592 北风推荐: 资深的讲师背景,深厚的理论基础,本套课程特别适合教学课题研究与IT类的论文写作参考. 个人简历 金石先生是马克思主义中国化的研究学者,上海财经大学经济学和管理学硕士,中国民主建国会成员,中国特色社会主义人文科技管理哲学的理论奠基人之一.金石先生博学多才,对问题有独到见解.专于工作且乐于助人,在

如何写SysV服务管理脚本

本文目录: 1.1 SysV脚本的特性1.2 SysV脚本要具备的能力1.3 start函数分析1.4 stop函数分析1.5 reload函数分析1.6 status.restart.force-reload等1.7 结束语 SysV服务管理脚本和/etc/rc.d/init.d/functions文件中的几个重要函数(包括daemon,killproc,status以及几个和pid有关的函数)"关系匪浅".本人已对该文件做了极详细的分析和说明,参考functions文件详细分析和说