Android熟悉使用PackageManager,ActivityManager,MemoryInfo,引入布局文件Include的使用,values的管理
工作内容:
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同一个布局文件,并为布局文件中的组件设置参数
然后你首先 用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的管理相关推荐
- maxlength不起作用android,Android EditText设置Filter以后(xml布局文件中maxLength不起作用的解决办法)...
Android EditText设置Filter以后,xml布局文件中maxLength不起作用的解决办法 问题发现 最近项目里有个需求,文本框禁用emoji表情的输入,因为用到的地方较多,第一个想到 ...
- php+include+引入html文件,include引入文件
php include引入文件问题 include __DIR__ . ' ../lianxi1.php'; 为什么..前面不加/不对 lianxi前include函数是引入文件 命名空间解决的是同一 ...
- Android之自定义Dialog(Layout引入布局)
Dialog Dialog实现方式有很多中,引入layout布局的方式最好排版使用,简单易懂,我喜欢哈哈. 需要准备两个class,两个layout文件. 先写一个XXDialog的类继承自Diglo ...
- Android View 动态加载不同xml布局文件
以下代码可做参考, 主要是需要先removeAllViews(),在这里卡了会. public class BottomBar extends LinearLayout {private Contex ...
- Android 引入布局
一.仅引入布局文件 1. 新建一个xml布局文件title.xml,写入自定义布局代码 <?xml version="1.0" encoding="utf-8&qu ...
- 【Android 性能优化】布局渲染优化 ( 过渡绘制 | 自定义控件过渡绘制 | 布局文件层次深 | GPU 过渡绘制调试工具 | 背景过度绘制 )
文章目录 一. 过度绘制 二. 过度绘制两种情况 ( 自定义控件 | 布局文件 ) 三. 过度绘制调试 1. 打开过渡绘制调试工具 2. 过渡绘制调试中不同颜色的含义 3. 过渡渲染示例 四. 背景过 ...
- Android 四大组件,五大存储,六大布局
Android 四大组件 android四大组件分别是:Activity, service,content provider,broadcast receiver 一.Activity 1.概念: a ...
- autojs遍历当前页面所有控件_自定义控件(引入布局)
系统给我们提供了许多功能强大的控件,我们在需要时可以直接在布局中添加使用,但是有时候我们程序想要实现的功能往往因人而异,如:我们的程序需要在内个Activity的标题栏左侧有一个返回按钮(类似于iPh ...
- Android布局Include的好处,Android布局之include文件的使用中的疑难杂症
前言 有个需求是在不同的布局文件中引入相同的一个顶部toolbar的布局文件,因此用到include. 我的toolbar文件是这样的称之为layout_toolbar. ***xml xmlns:a ...
- 【Android 初学】3、控件布局初步
Start Android 什么是控件布局 所谓的控件布局方法,就是指控制控件在Activity当中的位置.大小.颜色以及其他控件样式属性的方法. 控件的布局,在android中,有两种方法: 1.使 ...
最新文章
- as5300g2 nas软件功能_【NAS教程】2.NAS的概念及选型
- Tkinter的事件绑定
- Scrapy框架的学习(11.scrapy框架中的下载中间件的使用(DownloaderMiddlewares))
- 3-插入排序C实现(递增递减的简单转换)
- 浅谈JavaScript继承
- HBase编程 API入门系列之create(管理端而言)(8)
- 《为iPad而设计:打造畅销App》——抓住iPad的核心用法
- VMware硬盘不足踩坑记录:扩容分区 + 删除.cache文件夹
- 数字资产支付行业研究报告 | TokenInsight
- java 余弦定理_Java實現余弦定理計算文本相似度
- 蔚来回应测试车坠楼:初步确认为意外事故;首发苹果M2,新MacBook Pro 13英寸正式开售:9999元起|极客头条
- photoshop中制作法线贴图
- Spring Actuator介绍及使用
- ISO26262标准概览
- AjaxSubmit提交额外数据
- 各种License介绍
- 前端进击的巨人(四):略知函数式编程
- matlab里的function编程,MATLAB 元编程介绍
- 课程设计-基于Mysql+java实现的影院管理系统
- 金蝶云星空与巨益OMS对接集成采购退料查询连通库存异动(ERP采购退料对接OMS库存异动)