Android Studio中isScreenOn()弃用警告与冗余抑制的矛盾问题
解决Android Studio中弃用方法警告与冗余抑制的矛盾问题
针对你遇到的这个问题,有几个可行的解决办法:
方法一:使用官方兼容库(推荐)
直接用AndroidX Core库提供的PowerManagerCompat.isInteractive()方法,它内部已经封装了版本兼容逻辑,不用自己写if-else判断,自然不会触发任何警告:
import androidx.core.content.PowerManagerCompat; // 替换原来的代码 boolean isScreenOn = PowerManagerCompat.isInteractive(powerManager);
方法二:用@SuppressLint替代@SuppressWarnings
如果不想引入AndroidX,把原来的@SuppressWarnings("deprecation")换成Android专属的@SuppressLint("Deprecation"),并将注解添加在包含这段逻辑的方法上:
import android.annotation.SuppressLint; import android.os.Build; import android.os.PowerManager; @SuppressLint("Deprecation") private boolean checkScreenState(PowerManager powerManager) { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT_WATCH) { return powerManager.isScreenOn(); } else { return powerManager.isInteractive(); } }
Android Studio的lint检查工具对@SuppressLint的识别更准确,不会误判为冗余抑制。
方法三:调整版本判断逻辑的写法
有时候lint检查器对版本判断的识别不够精准,可以尝试将判断条件反转,让逻辑更清晰,帮助lint正确识别分支:
@SuppressLint("Deprecation") private boolean checkScreenState(PowerManager powerManager) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT_WATCH) { return powerManager.isInteractive(); } else { return powerManager.isScreenOn(); } }
问题原因
Android Studio Dolphin的lint检查器在部分场景下,无法正确关联版本判断分支与弃用方法的调用,导致出现“弃用警告”和“冗余抑制警告”的矛盾情况。使用官方兼容类能从根源上避免这类问题,也不用自己维护版本兼容逻辑。
内容的提问来源于stack exchange,提问作者Luis A. Florit
相关产品推荐
相关产品推荐

