You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 00:40:28