【发布时间】:2016-08-17 23:13:25
【问题描述】:
我在我的应用程序中使用@TargetApi(23)。
@TargetApi(23)
@Override
public void onAttach(Context context) {
super.onAttach(context);
onAttachToContext(context);
}
@SuppressWarnings("deprecation")
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
onAttachToContext(activity);
}
}
protected void onAttachToContext(Context context) {
}
但我无法理解:@TargetApi(23) 注释的意思是“仅适用于 Api 级别 23”或“适用于 Api 级别 23 及以上”?比如设备24的Api级别,是否调用了onAttach(Context context)方法?
【问题讨论】:
-
@TargetApi(23)表示“我,作为这个方法的作者,将确保它永远不会在 API 级别 24 或更高级别上被调用。但是,我已经对其进行了测试,并认为它适用于 API 23级及以下,即使我的minSdkVersion低于23级。”您对@TargetApi的使用对Android 本身以及该方法是否被调用都没有影响。它只是告诉构建工具停止抱怨您认为自己处理正确的问题。 -
@CommonsWare 这不是完全错误的方式吗?
-
@CommonsWare @TargetApi(23) 不意味着您保证永远不会在 API 级别 22 或更低级别(而不是 24 或更高级别)上调用它吗?
-
啊,是的,对不起,你是对的,我的评论是错误的。抱歉!
-
@kuhr:评论只能编辑 5 分钟,而更正来得太晚了近三年。我把原来的评论留在那里,所以其余的 cmets 是有意义的。而且,如果您的 :) 意味着您知道所有这些,我为堆栈解释道歉! (或者那是溢出?)
标签: android