我的 Java 代码包含以下几行:
Window window = getWindow();
View decor = window.getDecorView();
Context context = decor.getRootView().getContext();
Resources resources = context.getResources();
...
ActivityManager.TaskDescription description;
if (android.os.Build.VERSION.SDK_INT >= 28)
description = new ActivityManager.TaskDescription(
resources.getString(R.string.app_name),
R.drawable.app_icon,
ContextCompat.getColor(this, R.color.colorTaskBar));
else
//noinspection deprecation
description = new ActivityManager.TaskDescription(
resources.getString(R.string.app_name),
getBitmap(this, R.drawable.app_icon),
ContextCompat.getColor(this, R.color.colorTaskBar));
setTaskDescription(description);
我的项目 build.gradle 包含以下几行:
allprojects {
repositories {
google()
jcenter()
}
gradle.projectsEvaluated {
tasks.withType(JavaCompile) {
options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation"
}
}
}
由于我的build.gradle文件中有-Xlint:deprecation
选项,因此我可以在代码中找到弃用的地方。
重建项目时,收到以下警告:
[deprecation] TaskDescription中的TaskDescription(String,Bitmap,int)已弃用
...它指向
的使用@Deprecated
public TaskDescription(String label, Bitmap icon, int colorPrimary)
嗯,我知道这一点,正如您在我的Java代码顶部看到的那样,我检查版本并使用
public TaskDescription(String label, @DrawableRes int iconRes, int colorPrimary)
对于API 28+,因为此版本的TaskDescription
仅可从API 28获得。
那么我应该怎么做才能消除警告?我想清洁我的代码,所以我想重新编码此部分以使其100%正确?我的代码有什么问题?