- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我的应用程序中有关于 StrictMode
的问题,并添加了基本上禁用 StrictModeHelper
的代码 fragment 。但是,Lint 现在提示 setThreadPolicy()
并建议添加
@SuppressLint 'NewApi'
或
@TargetApi(Build.VERSION_CODES.GINGERBREAD)
到 View 的 onCreate()
事件。
首选哪种方法..或者他们基本上都在做同样的事情?
最佳答案
I have issues in my app regarding StrictMode and added the code snippet that basically disables the StrictModeHelper
请修复网络错误。
Which method is prefered ..or are they basically doing the same?
@TargetApi
和 @SuppressLint
具有相同的核心作用:它们抑制 Lint 错误。
不同之处在于,使用 @TargetApi
时,您通过参数声明您在代码中处理的 API 级别,这样如果您稍后将方法修改为尝试引用比 @TargetApi
中引用的 API 级别更新的内容。
例如,假设您没有阻止关于网络错误的 StrictMode
投诉,而是尝试解决 AsyncTask
在较新版本的安卓。您的代码中有这样一个方法,可以在较新的设备上选择加入线程池,并在较旧的设备上使用默认的多线程行为:
@TargetApi(11)
static public <T> void executeAsyncTask(AsyncTask<T, ?, ?> task,
T... params) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
task.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, params);
}
else {
task.execute(params);
}
}
拥有 @TargetApi(11)
意味着如果 Lint 检测到我正在使用比我的 android:minSdkVersion
更新的东西,但达到 API 级别 11,Lint 不会投诉。在这种情况下,这是可行的。但是,如果我修改此方法以引用直到 API 级别 14 才添加的内容,则 Lint 错误将再次出现,因为我的 @TargetApi(11)
注释说我只修复了代码适用于 API 级别 11 和
below
以上,而不是 API 级别 14 和
below
以上。
使用 @SuppressLint('NewApi')
,我会丢失 any API 级别的 Lint 错误,无论我的代码引用什么以及我的代码设置什么处理。
因此,@TargetApi
是首选注释,因为它允许您以更细粒度的方式告诉构建工具“好的,我修复了此类问题”。
关于android - 什么更好: @SuppressLint or @TargetApi?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14341042/
我在一些代码中遇到了 @SuppressLint("InlinedApi"),但在网上找不到任何关于它的描述。我理解 @SuppressLint("NewApi") 用于在我们编写高于 list 中提
谁能给我解释一下@SuppressWarnings 和@SuppressLint 之间的区别?我们什么时候应该使用一个而不是另一个? 我已经阅读了文档,但仍然不明白其中的区别。使用示例/示例代码进行解
我的应用程序中有关于 StrictMode 的问题,并添加了基本上禁用 StrictModeHelper 的代码 fragment 。但是,Lint 现在提示 setThreadPolicy() 并建
在某些情况下,我想在我的 ScrollView 上禁用滚动。 为此,我使用 .setOnTouchListener 并在 onTouch 中返回 true。 3.0 studio 给了我 lint 警
我试图理解以下代码中 @SuppressLint Java 注释的用途: @SuppressLint("StaticFieldLeak") private class RemoteDataTask e
我是一名安卓初学者。在尝试管理 Activity 生命周期的代码时,我遇到了一个新事物。 package com.example.activitylaunch; import android.os.B
我尝试使用以下代码连接“数字”(整数变量)和“$”(字符串),但我收到了来自 android studio 的警告:“不要连接使用 setText 显示的文本。将资源字符串与占位符一起使用。”并建议我
我现在想知道使用@SuppressLint("RestrictedApi") 注释是否安全。我很确定答案是否定的,所以我也想问问为什么。 我猜想开发团队想对 API 用户隐藏这样的受限代码。可能是由于
目前,我需要忽略与国际化相关的字符串连接警告,但希望将来“学习如何钓鱼” 以获取其他专门的警告。 最佳答案 使用android studio 1.5.1 bundle 的版本 lint --list
代码A来自CameraX项目,你可以看到source code . 当我删除 @SuppressLint("RestrictedApi") 时,Android Studio 将显示“只能从同一个库组中
我是 Android 的初学者,目前仍坚持以下问题:http://developer.android.com/training/basics/firstapp/starting-activity.ht
我是一名优秀的程序员,十分优秀!