工作内容:

1.熟练使用PackageManager,ActivityManager,Debug.MemoryInfo

2.获取系统内存

3.获取正在运行的进程情况

4.搭建手机加速页面

5.include引入两次同一个布局文件该这么去找到相应组件,传入不同的参数

6.对values文件(colors,styles,strings)的管理和使用

学习分享:

一、PackageManager

获取它的实例:PackageManager pm = Context.getPackageManager();

1.用于获取ApplicationInfo(根据包名,软件名称)

ApplicationInfo appInfo = pm.getApplicationInfo(rapi.processName, 0);
imaged = appInfo.loadIcon(pm); // 获取对应包的软件图标
name = appInfo .loadLabel(pm).toString();//获取对应的软件名称

2.用于获取已安装的软件信息

List<PackageInfo> packageInfos = pm.getInstalledPackages(0);
packageName = packageInfos.get(i).packageName;//获取已安装软件的包的路径(包名)通过此包名通过1可以获取对应的软件图标
version = packageInfos.get(i).versionName;//获取已安装软件的版本名称

3.获取应用名和图标的Drawable对象

mActivityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);List<RunningAppInfo> runningAppInfos = new ArrayList<RunningAppInfo>(); // 保存过滤查到的AppInfopm = this.getPackageManager();
// 通过调用ActivityManager的getRunningAppProcesses()方法获得系统里所有正在运行的进程List<ActivityManager.RunningAppProcessInfo> appProcessList = mActivityManager.getRunningAppProcesses();// 通过调用ActivityManager的getRunningAppProcesses()方法获得系统里所有正在运行的进程List<ActivityManager.RunningAppProcessInfo> appProcessList = mActivityManager.getRunningAppProcesses();
//.....
for (ActivityManager.RunningAppProcessInfo appProcess : appProcessList) {int pid = appProcess.pid; // pidString processName = appProcess.processName; //应用包名/进程名try {appInfo = pm.getApplicationInfo(processName, 0);//判断是用户进程
//                if ((appInfo.flags & ApplicationInfo.FLAG_SYSTEM) == 0){imageD = appInfo.loadIcon(pm);//应用图标的Drawable对象packageName = appInfo.loadLabel(pm).toString();//应用名称runningAppInfos.add(new RunningAppInfo(packageName, imageD, processName));
//                }} catch (PackageManager.NameNotFoundException e) {e.printStackTrace();}}

二、ActivityManager

获取它的实例:ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);

1.获取进程运行信息

List<ActivityManager.RunningAppProcessInfo> rsiList = am.getRunningAppProcesses();
PackageManager pm = context.getPackageManager();
for (ActivityManager.RunningAppProcessInfo rapi : rsiList) {//获取的进程分类是importance>100的进程(可在网上查阅其原因)if (rapi.importance > 100) {Debug.MemoryInfo memoryInfo = am.getProcessMemoryInfo(new int[]{rapi.pid})[0];//获取进程占用系统内存的大小long size = memoryInfo.getTotalPrivateDirty();//获取之后的单位是kbDrawable imaged = null; //定义放置对象的drawable的对象try {ApplicationInfo appInfo = pm.getApplicationInfo(rapi.processName, 0);imaged = appInfo.loadIcon(pm); //软件图标} catch (PackageManager.NameNotFoundException e) {imaged = context.getResources().getDrawable(R.drawable.ic_launcher);}//获取apk包名对应的应用程序名称ApplicationInfo appInfo = pm.getApplicationInfo(rapi.processName, 0);name = appInfo .loadLabel(pm).toString();//获取对应的软件名称//下面的判断是判断“不是系统进程”if ((rapi.uid & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) != 0)

三、获取手机RAM,ROM运行情况

实例:

//获取系统总外置存储空间大小(RAM)
public static long getMemoryAll() {File path = Environment.getDataDirectory();StatFs stat = new StatFs(path.getPath());long blockSize = stat.getBlockSize();long totalBlocks = stat.getBlockCount();return totalBlocks * blockSize;
}//获取系统剩余外置存储空进(RAM)
public static long getMemoryCanUse() {File path = Environment.getDataDirectory();StatFs stat = new StatFs(path.getPath());long blockSize = stat.getBlockSize();long availableBlocks = stat.getAvailableBlocks();return availableBlocks * blockSize;
}//获取系统总内置存储空间大小(ROM)
public static long getRomAll() {String dir = "/proc/meminfo";try {FileReader fr = new FileReader(dir);BufferedReader br = new BufferedReader(fr, 2048);String memoryLine = br.readLine();String subMemoryLine = memoryLine.substring(memoryLine.indexOf("MemTotal:"));br.close();return Integer.parseInt(subMemoryLine.replaceAll("\\D+", "")) * 1024l;} catch (IOException e) {e.printStackTrace();}return 0;
}//获取系统可用内置存储空间大小(ROM)
public static long getRomCanUse(Context context) {ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);ActivityManager.MemoryInfo outInfo = new ActivityManager.MemoryInfo();// 获取手机运行内存大小am.getMemoryInfo(outInfo);long avail = outInfo.availMem; // bytereturn avail;
}

四、同一个页面中使用2次include同一个布局文件,并为布局文件中的组件设置参数

你include两次要分别命名成为不同的id
然后你首先 用findViewById得到这两个layout的view
View viewA = findViewById(R.id.layout_a);
View viewB = findViewById(R.id.layout_b);
然后你想得到每一个layout里面的控件时调用,比如你有一个TextView
TextView tv = viewA.findViewById(R.id.tv);
TextView tv2 = viewB.findViewById(R.id.tv);
这样你就可以获取对象引用了。 ... 

五、 对values文件(colors,styles,strings)的管理和使用

带来好处:

1.在组件上调用已经在values文件中配置好的数据,可以使界面的xml文件看起来很简洁。

2.在以后需要去更新的时候可以很简单的去改(只需改alues文件中中配置即可),xml中自动改变。

如何管理:

1.针对每个页面(Activity)写一个values文件,起名与Activity名称有关联。

2.colors,styles,strings定义名称都可以以Activity名称的简写开头,这样,在调用时能快速找到。

实例:

<?xml version="1.0" encoding="utf-8"?>
<resources><!--取名规范(自定义)Activity名称简写 + [include]相应简写 + 内容--><string name="softmanager_top_mermoryinfo">手机空间分配情况</string><string name="softmanager_top_rominfo">内置空间</string><string name="softmanager_top_raminfo">外置空间</string><string name="softmanager_pb_rominfo">内置空间(已使用/全部)</string><string name="softmanager_pb_raminfo">外置空间(已使用/全部)</string><string name="softmanager_allsoft">所有软件</string><string name="softmanager_syssoft">系统软件</string><string name="softmanager_usersoft">用户软件</string><style name="softmanager_tv"><item name="android:layout_width">match_parent</item><item name="android:layout_height">wrap_content</item><item name="android:layout_weight">1</item><item name="android:textSize">22dp</item><item name="android:textColor">#333</item><item name="android:gravity">center_vertical</item><item name="android:drawableRight">@drawable/ic_arrows_right</item><item name="android:layout_marginTop">1dp</item><item name="android:background">@drawable/pressed_tv</item></style><style name="sortmanager_top_text"><item name="android:layout_height">wrap_content</item><item name="android:layout_width">wrap_content</item><item name="android:textSize">17sp</item><item name="android:textColor">#000</item><item name="android:layout_weight">1</item><item name="android:layout_marginLeft">5dp</item><item name="android:layout_gravity">center_vertical</item></style>
</resources>

Android熟悉使用PackageManager,ActivityManager,MemoryInfo,引入布局文件Include的使用,values的管理相关推荐

  1. maxlength不起作用android,Android EditText设置Filter以后(xml布局文件中maxLength不起作用的解决办法)...

    Android EditText设置Filter以后,xml布局文件中maxLength不起作用的解决办法 问题发现 最近项目里有个需求,文本框禁用emoji表情的输入,因为用到的地方较多,第一个想到 ...

  2. php+include+引入html文件,include引入文件

    php include引入文件问题 include __DIR__ . ' ../lianxi1.php'; 为什么..前面不加/不对 lianxi前include函数是引入文件 命名空间解决的是同一 ...

  3. Android之自定义Dialog(Layout引入布局)

    Dialog Dialog实现方式有很多中,引入layout布局的方式最好排版使用,简单易懂,我喜欢哈哈. 需要准备两个class,两个layout文件. 先写一个XXDialog的类继承自Diglo ...

  4. Android View 动态加载不同xml布局文件

    以下代码可做参考, 主要是需要先removeAllViews(),在这里卡了会. public class BottomBar extends LinearLayout {private Contex ...

  5. Android 引入布局

    一.仅引入布局文件 1. 新建一个xml布局文件title.xml,写入自定义布局代码 <?xml version="1.0" encoding="utf-8&qu ...

  6. 【Android 性能优化】布局渲染优化 ( 过渡绘制 | 自定义控件过渡绘制 | 布局文件层次深 | GPU 过渡绘制调试工具 | 背景过度绘制 )

    文章目录 一. 过度绘制 二. 过度绘制两种情况 ( 自定义控件 | 布局文件 ) 三. 过度绘制调试 1. 打开过渡绘制调试工具 2. 过渡绘制调试中不同颜色的含义 3. 过渡渲染示例 四. 背景过 ...

  7. Android 四大组件,五大存储,六大布局

    Android 四大组件 android四大组件分别是:Activity, service,content provider,broadcast receiver 一.Activity 1.概念: a ...

  8. autojs遍历当前页面所有控件_自定义控件(引入布局)

    系统给我们提供了许多功能强大的控件,我们在需要时可以直接在布局中添加使用,但是有时候我们程序想要实现的功能往往因人而异,如:我们的程序需要在内个Activity的标题栏左侧有一个返回按钮(类似于iPh ...

  9. Android布局Include的好处,Android布局之include文件的使用中的疑难杂症

    前言 有个需求是在不同的布局文件中引入相同的一个顶部toolbar的布局文件,因此用到include. 我的toolbar文件是这样的称之为layout_toolbar. ***xml xmlns:a ...

  10. 【Android 初学】3、控件布局初步

    Start Android 什么是控件布局 所谓的控件布局方法,就是指控制控件在Activity当中的位置.大小.颜色以及其他控件样式属性的方法. 控件的布局,在android中,有两种方法: 1.使 ...

最新文章

  1. as5300g2 nas软件功能_【NAS教程】2.NAS的概念及选型
  2. Tkinter的事件绑定
  3. Scrapy框架的学习(11.scrapy框架中的下载中间件的使用(DownloaderMiddlewares))
  4. 3-插入排序C实现(递增递减的简单转换)
  5. 浅谈JavaScript继承
  6. HBase编程 API入门系列之create(管理端而言)(8)
  7. 《为iPad而设计:打造畅销App》——抓住iPad的核心用法
  8. VMware硬盘不足踩坑记录:扩容分区 + 删除.cache文件夹
  9. 数字资产支付行业研究报告 | TokenInsight
  10. java 余弦定理_Java實現余弦定理計算文本相似度
  11. 蔚来回应测试车坠楼:初步确认为意外事故;首发苹果M2,新MacBook Pro 13英寸正式开售:9999元起|极客头条
  12. photoshop中制作法线贴图
  13. Spring Actuator介绍及使用
  14. ISO26262标准概览
  15. AjaxSubmit提交额外数据
  16. 各种License介绍
  17. 前端进击的巨人(四):略知函数式编程
  18. matlab里的function编程,MATLAB 元编程介绍
  19. 课程设计-基于Mysql+java实现的影院管理系统
  20. 金蝶云星空与巨益OMS对接集成采购退料查询连通库存异动(ERP采购退料对接OMS库存异动)

热门文章

  1. 二元置信椭圆r语言_医学统计R语言:分面画boxplot
  2. 幼儿园php源码,v2.8XYCMS幼儿园建站系统
  3. 三大主流负载均衡器LVS、Nginx、HAproxy详解
  4. CAN总线概念(一)
  5. LVS-NAT基于NFS存储部署Discuz
  6. Poj 1328 Radar Installation 贪心
  7. 软件插件安装激活教程以及密钥
  8. 面试 11、知识拓展
  9. # 你也可以在你的微信 or QQ头像添加小国旗了,超简单!
  10. 数字转日期 matlab,excel – 如何在MATLAB中将日期转换为数字并再返回