我在我的应用程序中使用@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 及以上"?例如,如果设备的 API 级别为 24,那么 onAttach(Context context) 方法会被调用吗?
@TargetApi(23)
的意思是“我作为这个方法的作者,将确保它不会在API级别24或更高版本上被调用。但是,我已经测试过,并且觉得它在API级别23及以下工作正常,尽管我的minSdkVersion
小于23。”你对@TargetApi
的使用不会影响Android本身以及方法是否被调用。它只是告诉构建工具停止抱怨你认为自己已经正确处理的问题。 - CommonsWare