android activitymanagerservice_安卓开发API

android activitymanagerservice_安卓开发APIAndroid中Java层的ActivityManager类中封装了很多API,可以供我们查询当前系统的很多信息,包括:内存、进程(Process)、任务栈(Task)、服务(Service)等的相关信息。利用这些信息可以进行一些有用的判断,例如判断当前系统内存是否不足、指定Service是否在运行中。(ActivityManager类封装了很多API方法供上层调用,具体负责管理Activity、Service等组件的是ActivityManagerService(AMS…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

    Android中Java层的ActivityManager类中封装了很多API,可以供我们查询当前系统的很多信息,包括:内存、进程(Process)、任务栈(Task)、服务(Service)等的相关信息。
    利用这些信息可以进行一些有用的判断,例如判断当前系统内存是否不足、指定Service是否在运行中。
    (ActivityManager类封装了很多API方法供上层调用,具体负责管理Activity、Service等组件的是
ActivityManagerService(AMS),而这些功能大部分是在native层实现的。
1.获取内存信息
//获取内存信息
//MemoryInfo比较重要的属性
//          availMem:系统当前可用内存
//          totalMem:系统总的内存
//          threshold:系统判定自己内存不足的阀值,即临界值。低于该值时,系统会开始杀死一些优先级较低的服务和进程。
//          lowMemory:当前是否处于第内存状态,若当前可用内存<=threshold,lowMemory为true
ActivityManager.MemoryInfo memoryInfo = new ActivityManager.MemoryInfo();
mActivityManager.getMemoryInfo(memoryInfo);
2.获取正在运行的进程信息
//获取正在运行的进程信息
//RunningAppProcessInfo重要属性
//    importance:进程在系统中的优先级,值越低进程越不容易被杀死
//    importanceReasonCode:进程的重要原因代码
//    importanceReasonComponent:进程中组件的描述信息
//    pkgList:被载入当前进程的所有包名
//    processName:当前进程的名称
        以下为Android常见的优先级对应值,值越低,对应的优先级越高,进程就越不容易被系统杀死:
*      ActivityManager.RunningAppProcessInfo.
*                       IMPORTANCE_FOREGROUND=100,         运行着前台组件(可交互),或绑定前台组件的Service
*                       IMPORTANCE_FOREGROUND_SERVICE=125, 运行着前台Service
*                       IMPORTANCE_VISIBLE=200,            可见进程(有组件可见不可交互,或有绑定此类组件的Service)
*                       IMPORTANCE_SERVICE=300,
*                       IMPORTANCE_TOP_SLEEPING=325,
*                       IMPORTANCE_CACHED=400,
*                       IMPORTANCE_EMPTY=500,
*                       IMPORTANCE_GONE=1000
List<ActivityManager.RunningAppProcessInfo> processInfoList = mActivityManager.getRunningAppProcesses();
3.获取正在运行的服务信息
//获取正在运行的服务信息
//官方文档中建议只在debug时使用该API,不要有重要的代码逻辑基于此API的结果
//RunningServiceInfo属性
//        activeSince:服务第一次被激活的时间 (启动和绑定方式)
//        foreground: 是否为前台服务
//        lastActivityTime:最后一个Activity与服务绑定的时间
//        service:服务的组件名称
//        started:若此值为true,则表示服务已经在启动运行中
List<ActivityManager.RunningServiceInfo> serviceInfoList = mActivityManager.getRunningServices(Integer.MAX_VALUE);
4.获取正在运行的任务栈信息
//获取正在运行的任务栈信息
//官方文档中建议只在debug时使用该API,不要有重要的代码逻辑基于此API的结果
//需要权限:<uses-permission android:name=”android.permission.GET_TASKS” />
//RunningTaskInfo重要属性
//        baseActivity:栈底Activity
//        topActivity:栈顶Activity
//        numActivities: 栈中的全部Activity数量,包含已停止的
//        numRunning,任务中运行中的Activity数量,不包含已停止的
List<ActivityManager.RunningTaskInfo> taskInfoList = mActivityManager.getRunningTasks(Integer.MAX_VALUE);
#.其它一些API
getDeviceConfigurationInfo () :获取设备信息
getProcessMemoryInfo(int[] pids):返回一个或多个进程当前的内存使用信息
killBackgroundProcesses(String packageName) :根据包名杀死对应进程
clearApplicationUserData() :清除当前App在内部存储空间中的缓存数据,等同于在手机设置中清除用户数据。
getAppTasks() :获取当前应用相关的任务栈列表
addAppTask (Activity activity, Intent intent, ActivityManager.TaskDescription description, Bitmap thumbnail) :为Activity创建新的任务栈,activity(需要创建任务栈的Activity),intent(用于跳转页面的Intent),description(描述信息),thumbnail(缩略图)
getLauncherLargeIconSize () : 获取Launcher(启动器)图标大小
isUserAMonkey() :是否用户是否像“猴子”一样快速不断点击
##.应用示例
/**
* 获取指定APP包名对应的进程的优先级
*    APP包名对应的进程是其默认进程名,一般为其最主要的进程。而且大多数APP只有这一个进程。
*      以下为Android常见的优先级对应值,值越低,对应的优先级越高,进程就越不容易被系统杀死:
*      ActivityManager.RunningAppProcessInfo.
*                       IMPORTANCE_FOREGROUND=100,         运行着前台组件(可交互),或绑定前台组件的Service
*                       IMPORTANCE_FOREGROUND_SERVICE=125, 运行着前台Service
*                       IMPORTANCE_VISIBLE=200,            可见进程(有组件可见不可交互,或有绑定此类组件的Service)
*                       IMPORTANCE_SERVICE=300,
*                       IMPORTANCE_TOP_SLEEPING=325,
*                       IMPORTANCE_CACHED=400,
*                       IMPORTANCE_EMPTY=500,
*                       IMPORTANCE_GONE=1000
* @param packageName
* @return
*/
public int getAppProcessImportance(Context context, String packageName){
    if(context == null || TextUtils.isEmpty(packageName)){
        return Integer.MAX_VALUE;
    }
    init(context);
    List<ActivityManager.RunningAppProcessInfo> processList = mActivityManager.getRunningAppProcesses();
    if(processList == null || processList.size() == 0){
        return Integer.MAX_VALUE;
    }
    for(ActivityManager.RunningAppProcessInfo processInfo : processList){
        if(processInfo == null || TextUtils.isEmpty(processInfo.processName)){
            continue;
        }
        if(processInfo.processName.equals(packageName)){
            return processInfo.importance;
        }
    }
    return Integer.MAX_VALUE;
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/196300.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • ASp.NET MVC 路由「建议收藏」

    ASp.NET MVC 路由「建议收藏」路由ASP.NETMVCRoute—转发请求:1.客户端发起请求2.到达IIS3.转发到程序集4.经过一个路由匹配–转发到匹配的控制器中5.匹配的action去处理RouteConfig中如果有多个路由,从上到下进行匹配,按照路由url中的正则表达式进行匹配,在命中url后找不到Controller或View则使用defaults中的默认参数publicstaticvoidRegisterRoutes(RouteCollectionroutes){

    2022年7月21日
    12
  • s一般怎么称呼自己的m_从你对四种新疆夏至美食的称呼,就能判断你是不是新疆人…

    s一般怎么称呼自己的m_从你对四种新疆夏至美食的称呼,就能判断你是不是新疆人…夏至到了,看着晴朗的天空,体味着周围不断蒸腾起的热浪,尤其是内里的燥热难当。闭起眼来,问自己的内心的胃,现在最想吃的、喝的是什么?不承想,竟然是最具有新疆特色的几样美味。而且,我今天不准备说怎么吃,只说怎么叫!意不意外,新鲜不新鲜!第一种美味——冰镇红乌苏你一定会认为我要说大盘鸡?哈哈哈,太土了吧!也不知道从什么时候起,乌苏啤酒,成为了流行全国的夏日最火啤酒。如果你说“乌苏啤酒”恭喜你,你要被小轻…

    2022年6月23日
    35
  • 关于在网页拼接时出现:“Uncaught SyntaxError: missing ) after argument list”的真凶在哪里

    关于在网页拼接时出现:“Uncaught SyntaxError: missing ) after argument list”的真凶在哪里

    2022年2月20日
    73
  • SAE J1939 协议源代码分析(一)-程序结构框架

    SAE J1939 协议源代码分析(一)-程序结构框架文件组成概述文件名功能备注J1939.c协议源代码数据链路层,网络层实现j1939.h协议源代码数据链路层,网络层实现j1939_Config.h协议配置移植文件移植J1939,唯一改动文件函数组成结构函数大概分为4类:1.内部函数,J1939内部使用的函数。函数如下:文件名类型备注文件位置Compa

    2022年5月1日
    196
  • SQL Server 动态掩码

    SQL Server 动态掩码

    2021年11月27日
    47
  • linux查看crontab状态_crontab -e

    linux查看crontab状态_crontab -elinux下定时执行任务的方法在LINUX中,周期执行的任务一般由cron这个守护进程来处理[ps-ef|grepcron]。cron读取一个或多个配置文件,这些配置文件中包含了命令行及其调用时间。cron的配置文件称为“crontab”,是“crontable”的简写。一、cron在3个地方查找配置文件:1、/var/spool/cron/这个目录下存放的是每个用户包括root的cron…

    2022年8月24日
    8

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号