我的问题是参考以下链接: https://developer.android.com/training/scheduling/wakelock.html
我正在使用APK并因此使用ASM来阅读课程。 我也参加过Eric Bruneton的ASM指南。
TraceClassVisitor是我发现的最接近的东西,足以完成我想要做的事情。 但这还不够好。
我从Google PlayStore中选择了几款Android应用,并试图找出它们是否会造成比实际应用更多的电量消耗.........
使用ASM,如何查看是否仅从活动内部调用了FLAG_KEEP_SCREEN_ON
?
如果它是一个方法,我可以检查方法的所有者是否是扩展Activity的类。但问题是FLAG_KEEP_SCREEN_ON
将通过使用
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
那么如何检测活动中是否设置了FLAG_KEEP_SCREEN_ON? 如果不是,我将需要记录它。
答案 0 :(得分:0)
嗨getWindow()是Activity中的一个方法。因此,只有活动(也可能是对话框)可以设置FLAG_KEEP_SCREEN_ON
标志。
答案 1 :(得分:0)
使用下面的代码来检查设备屏幕是否打开,而不是在此
中应用您的逻辑PowerManager powermanager;
powermanager = (PowerManager) this.getSystemService(Context.POWER_SERVICE);
if (powermanager.isScreenOn()){
...
}else{
...
}