最后是今天给大家分享的一些独家干货:
【Android开发核心知识点笔记】
【Android思维脑图(技能树)】
【Android核心高级技术PDF文档,BAT大厂面试真题解析】
【Android高级架构视频学习资源】
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
}else if(aStats!=null && bStats ==null) {
result = -1;
} else if(aStats==null && bStats !=null) {
result = 1;
}
} catch (RemoteException e) {
Log.i(“TAG”, “get package usage stats fail”);
}
return result;
}
那么如果想在sdk中使用这个 类要如果作呢–可以使用反射 的方法,代码如下:
public final int compare(ApplicationInfo a, ApplicationInfo b) {
ComponentName aName = a.intent.getComponent();
ComponentName bName = b.intent.getComponent();
int aLaunchCount,bLaunchCount;
long aUseTime,bUseTime;
int result = 0;
try {
//获得ServiceManager类
Class<?> ServiceManager = Class
.forName(“android.os.ServiceManager”);
//获得ServiceManager的getService方法
Method getService = ServiceManager.getMethod(“getService”, java.lang.String.class);
//调用getService获取RemoteService
Object oRemoteService = getService.invoke(null, “usagestats”);
//获得IUsageStats.Stub类
Class<?> cStub = Class
.forName(“com.android.internal.app.IUsageStats$Stub”);
//获得asInterface方法
Method asInterface = cStub.getMethod(“asInterface”, android.os.IBinder.class);
//调用asInterface方法获取IUsageStats对象
Object oIUsageStats = asInterface.invoke(null, oRemoteService);
//获得getPkgUsageStats(ComponentName)方法
Method getPkgUsageStats = oIUsageStats.getClass().getMethod(“getPkgUsageStats”, ComponentName.class);
//调用getPkgUsageStats 获取PkgUsageStats对象
Object aStats = getPkgUsageStats.invoke(oIUsageStats, aName);
Object bStats = getPkgUsageStats.invoke(oIUsageStats, bName);
//获得PkgUsageStats类
Class<?> PkgUsageStats = Class.forName(“com.android.internal.os.PkgUsageStats”);
aLaunchCount = PkgUsageStats.getDeclaredField(“launchCount”).getInt(aStats);
bLaunchCount = PkgUsageStats.getDeclaredField(“launchCount”).getInt(bStats);
aUseTime = PkgUsageStats.getDeclaredField(“usageTime”).getLong(aStats);
bUseTime = PkgUsageStats.getDeclaredField(“usageTime”).getLong(bStats);
if((aLaunchCount>bLaunchCount)||
((aLaunchCount == bLaunchCount)&&(aUseTime>bUseTime)))
result = 1;
else if((aLaunchCount<bLaunchCount)||((aLaunchCount ==
bLaunchCount)&&(aUseTime<bUseTime)))
result = -1;
else {
result = 0;
}
最后
最后这里放上我这段时间复习的资料,这个资料也是偶然一位朋友分享给我的,里面包含了腾讯、字节跳动、阿里、百度2019-2021面试真题解析,并且把每个技术点整理成了视频和PDF(知识脉络 + 诸多细节)。
还有 高级架构技术进阶脑图、高级进阶架构资料 帮助大家学习提升进阶,也可以分享给身边好友一起学习。
一起互勉~
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!