ActivityManager

摘要:
android.app.ActivityManager类主要用于管理所有设备上的活动。如果(ad.taskId>}否则{Intent=ad.Intent;newUserHandle(UserHandle.USER_CURRENT)),则单击“开始任务”;

android.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键或者点击任务键)里面的任务主要就是靠这种方法获取的。

                final List<ActivityManager.RecentTaskInfo> recentTasks =
                        am.getRecentTasks(MAX_TASKS, ActivityManager.RECENT_IGNORE_UNAVAILABLE);
  点击启动任务
        if (ad.taskId >= 0) {
            // This is an active task; it should just go to the foreground.
            am.moveTaskToFront(ad.taskId, ActivityManager.MOVE_TASK_WITH_HOME,
                    opts);
        } else {
            Intent intent = ad.intent;
            intent.addFlags(Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY
                    | Intent.FLAG_ACTIVITY_TASK_ON_HOME
                    | Intent.FLAG_ACTIVITY_NEW_TASK);
            if (DEBUG) Log.v(TAG, "Starting activity " + intent);
            context.startActivityAsUser(intent, opts,
                    new UserHandle(UserHandle.USER_CURRENT));
        }
  滑动删除任务(hide方法,需系统权限android.permission.REMOVE_TASKS)
am.removeTask(ad.persistentTaskId, ActivityManager.REMOVE_TASK_KILL_PROCESS);

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

        ActivityManager am = (ActivityManager)getActivity().getSystemService(
                Context.ACTIVITY_SERVICE);
        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。

    

		ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
		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.

免责声明:文章转载自《ActivityManager》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇配置管理工具比較MySQL 用 binlog 及备份进行回滚/恢复下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Windows网络编程

第一章序言                 我写这个专题的目的,一方面是为了通过对网络编程再一次系统的总结,提高自己的网络编程水平,特别是Windows下的网络编程水平。同一时候,我也希望,能为众多初学网络编程的人提供一点帮助,由于我開始学习网络编程的时候,能找到的资料就非常少。当然,花钱能够买到翻译版本号的书:)               首先向大家...

celery 定时任务时间篇

1、Celery加入定时任务 Celery除了可以异步执行任务之外,还可以定时执行任务。在实例代码的基础上写个测试方法: 1 #coding:utf-8 2 from celery.task.schedules import crontab 3 from celery.decorators import periodic_task 4...

HTML超链接中文乱码

Vm中一个超链接URL需要拼接中文作为Get请求的参数。如果直接拼接,传到后台Action的参数对象中后取出会是乱码,需要编码后再拼接到URL上。  解决方法是在Action中添加一个成员变量,保存编码后的中文参数。在vm页面渲染时取出这个变量值,再拼接超链接。 在这里碰到的问题是:调用java.net.URLEncoder的encode()方法时,如...

Spring-AOP(面向切面编程)

什么是AOP   AOP是Spring提供的关键特性之一。AOP即面向切面编程,是OOP编程的有效补充。使用AOP技术,可以将一些系统性相关的编程工作,独立提取出来,独立实现,然后通过切面切入进系统。从而避免了在业务逻辑的代码中混入很多的系统相关的逻辑——比如权限管理,事物管理,日志记录等等。这些系统性的编程工作都可以独立编码实现,然后通过AOP技术切入...

Android Camera 通过V4L2与kernel driver的完整交互过程

Android Camera 通过V4L2与kernel driver的完整交互过程 之前在 Android Camera 的执行流程 http://blog.chinaunix.net/uid-26765074-id-3499537.html 这篇文章中已经详细介绍了Android Camera app到调用open打开camera 设备的完成过程,但是...

.Net Core如何优雅的实现中间件

在.Net Core的源码中,很多地方都有中间件的地方,Kestrel Server和Asp.net Core 等都用了中间件的设计,比如在Kestrel Server中,Http协议的1.0, 1.1, 2.0分别注册了不同的中间件从而导致不同方式的解析报文,这些要求了我们如何设计一个优雅的中间件框架,在MSDN 上这样描述了asp.net core的 ...