我是靠谱客的博主 迷人羽毛,最近开发中收集的这篇文章主要介绍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>(); // 保存过滤查到的AppInfo
pm = 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; // pid
String 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();//获取之后的单位是kb
Drawable 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; // byte
return 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的管理的全部内容,希望文章能够帮你解决Android熟悉使用PackageManager,ActivityManager,MemoryInfo,引入布局文件Include的使用,values的管理所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(55)

评论列表共有 0 条评论

立即
投稿
返回
顶部