• PERMISSION_REQUIRED:NULL

  • RESULT:processName=com.demo.activitymanager pid=4317 uid=10311

  • memorySize=1696kb

  • @param context

  • @return

*/

private String getRunningAppProcessInfo(Context context) {

String result = “\n\n getRunningAppProcessInfo:”;

ActivityManager activityManager = (ActivityManager) context

.getSystemService(Context.ACTIVITY_SERVICE);

// 获得系统里正在运行的所有进程

List runningAppProcessesList = activityManager

.getRunningAppProcesses();

for (RunningAppProcessInfo runningAppProcessInfo : runningAppProcessesList) {

int pid = runningAppProcessInfo.pid; // 进程ID号

int uid = runningAppProcessInfo.uid; // 用户ID

String processName = runningAppProcessInfo.processName; // 进程名

int[] pids = new int[] { pid };

Debug.MemoryInfo[] memoryInfo = activityManager

.getProcessMemoryInfo(pids);

int memorySize = memoryInfo[0].dalvikPrivateDirty; // 占用的内存

result += “\n\tprocessName=” + processName + “\tpid=” +

《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》

【docs.qq.com/doc/DSkNLaERkbnFoS0ZF】 完整资料开源分享

pid

  • “\tuid=” + uid + “\tmemorySize=” + memorySize + “kb”;

}

return result;

}

是否在前台


/**

  • 是否正在前台

  • @return

*/

public boolean isRunningForeground() {

String packageName = getPackageName(this);

String topActivityClassName = getTopActivityName(this);

System.out.println(“packageName=” + packageName

  • “,topActivityClassName=” + topActivityClassName);

if (packageName != null && topActivityClassName != null

&& topActivityClassName.startsWith(packageName)) {

return true;

} else {

return false;

}

}

public String getTopActivityName(Context context) {

String topActivityClassName = null;

ActivityManager activityManager = (ActivityManager) (context

.getSystemService(android.content.Context.ACTIVITY_SERVICE));

// android.app.ActivityManager.getRunningTasks(int maxNum)

// int maxNum—>The maximum number of entries to return in the list

// 即最多取得的运行中的任务信息(RunningTaskInfo)数量

List runningTaskInfos = activityManager

.getRunningTasks(1);

if (runningTaskInfos != null) {

ComponentName f = runningTaskInfos.get(0).topActivity;

topActivityClassName = f.getClassName();

}

return topActivityClassName;

}

public String getPackageName(Context context) {

String packageName = context.getPackageName();

return packageName;

}

判断服务是否在运行中


/**

  • 判断服务是否在运行中

  • @param context

  • @param serviceName

  • @return

*/

private boolean isServiceRunning(Context context, String serviceName) {

if (!TextUtils.isEmpty(serviceName) && context != null) {

ActivityManager activityManager = (ActivityManager) context

.getSystemService(Context.ACTIVITY_SERVICE);

ArrayList runningServiceInfoList = (ArrayList) activityManager

.getRunningServices(1000);

for (Iterator iterator = runningServiceInfoList

.iterator(); iterator.hasNext()

Android ActivityManager常用方法,kotlin协程的理解相关推荐

  1. android 协程,Android 上的 Kotlin 协程

    协程是一种并发设计模式,您可以在 Android 平台上使用它来简化异步执行的代码.协程是在版本 1.3 中添加到 Kotlin 的,它基于来自其他语言的既定概念. 在 Android 上,协程有助于 ...

  2. Android中使用Kotlin协程代替RxJava封装网络请求

    现在的Android项目普遍使用Retrofit+RxJava的组合实现网络接口请求与数据的展现.这一功能通过Kotlin语言的协程功能也可以很方便的实现. 相比较而言,RxJava功能过于强大,如果 ...

  3. Android中使用Kotlin协程(Coroutines)和Retrofit进行网络请求(二)之文件下载

    写在前面 下载功能是非常常用的功能,今天我们要通过kotlin协程和retrofit来是实现文件下载的功能.retorfit本身可以将请求结果以InputStream的形式返回,拿到InputStre ...

  4. 在 Android 开发中使用 Kotlin 协程 (一) -- 初识 Kotlin 协程

    前言 最近在研究 Kotlin 协程,发现功能真的超级强大,很有用,而且很好学,如果你正在或计划使用 Kotlin 开发 Android,那么 Kotlin 协程你一定不能错过! 协程是什么? 我们平 ...

  5. 枯燥的Kotlin协程三部曲(上)——概念启蒙篇

    0x0.引言 Kotlin 1.3 版本开始引入协程 Coroutine,简练的官方文档和网上一堆浅尝辄止的文章让我心里有些没底,不想止步于仅仅知道: ① Android中,Kotlin协程用于解决: ...

  6. Kotlin 协程探索

    文章目录 Kotlin 协程是什么? suspend 是什么? 总结 Kotlin 协程是什么? 本文只是自己经过研究后,对 Kotlin 协程的理解概括,如有偏差,还请斧正. 简要概括: 协程是 K ...

  7. 探索 Kotlin 协程原理

    接下来跟大家分享一下我在了解 Kotlin 协程实现的过程中理解的一些概念,如果你发现哪些地方我说错了的话,欢迎提出你的理解. 1. Kotlin 协程原理概述 Kotlin 协程的大致的执行流程如上 ...

  8. pdf 深入理解kotlin协程_Kotlin协程实现原理:挂起与恢复

    今天我们来聊聊Kotlin的协程Coroutine. 如果你还没有接触过协程,推荐你先阅读这篇入门级文章What? 你还不知道Kotlin Coroutine? 如果你已经接触过协程,但对协程的原理存 ...

  9. pdf 深入理解kotlin协程_协程初探

    Hello,各位朋友,小笨鸟我回来了! 近期学习了Kotlin协程相关的知识,感觉这块技术在项目中的可应用性很大,对项目的开发效率和维护成本有较大的提升.于是就考虑深入研究下相关概念和使用方式,并引入 ...

最新文章

  1. IIS 7.0的ASP.NET应用程序生命周期概述
  2. 多线程訪问共享数据(1)
  3. Event Tracing for Windows
  4. Oracle分析函数——函数列表
  5. 《大咖讲Wireshark网络分析》目录—导读
  6. 比java好的_Java Spring真的比直接进行Java编程好吗
  7. 常对象和常函数的关系 const
  8. 做完自动化测试,但别让不会汇报毁了你...
  9. 关于RecyclerView(一)基本使用
  10. oracle 删除xml记录,Oracle之xml的增删改查操作
  11. 小马哥---深度解析mtk刷机平台报错解决 4032 8038等
  12. nms网关服务器日常维护,ZXB10-NMS网管解决方案
  13. 一些常用的软件网络端口协议分类介绍
  14. css实现实心三角箭头,兼容ie
  15. python语言求年份的生肖
  16. AAAI17最佳论文:Label-Free Supervision of Neural Networks with Physics and Domain Knowledge
  17. 宫崎骏电影-Music
  18. 高压带电显示器局放检测面板式四合一局放在线监测/带电故障显示/无线测温装置
  19. WIFI接口定义知识介绍
  20. 散列表ADT--分离链接法

热门文章

  1. 畸形婚姻的尴尬与无奈
  2. 天坑专业学IC设计自学的话有公司会要吗
  3. SpringBoot之从零搭建博客网站(可提供源码)
  4. 【谷歌浏览器】【谷歌地球】【Adobe 软件】离线安装包的下载地址
  5. 基于odoo 环境下的 python 电子签名
  6. ❤️整理2万字带你走进C语言(详细讲解+代码演示+图解)❤️(强烈建议收藏!!!)
  7. C语言 strcpy 函数 - C语言零基础入门教程
  8. TF-IFD算法及python实现关键字提取
  9. 人工智能里的数学修炼 | 隐马尔可夫模型 : 维特比(Viterbi)算法解码隐藏状态序列
  10. TCP echo_server(C++)回射服务器实现以及问题记录