如何检测是否仅在Activity内设置了FLAG_KEEP_SCREEN_ON?

时间:2014-08-06 10:29:11

标签: android

我的问题是参考以下链接: 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? 如果不是,我将需要记录它。

2 个答案:

答案 0 :(得分:0)

getWindow()是Activity中的一个方法。因此,只有活动(也可能是对话框)可以设置FLAG_KEEP_SCREEN_ON标志。

答案 1 :(得分:0)

使用下面的代码来检查设备屏幕是否打开,而不是在此

中应用您的逻辑
PowerManager powermanager;
powermanager = (PowerManager) this.getSystemService(Context.POWER_SERVICE); 
if (powermanager.isScreenOn()){
        ...
    }else{
        ...
    }