支持被新方法取代的弃用方法的最佳方法是什么?

时间:2014-02-26 15:58:19

标签: android webview deprecated

我喜欢在android.webkit.WebView中使用findAll / findAllAsync方法。 findAll已被弃用,Google建议使用需要Jelly Bean或更高版本的findAllAsync。但是,我喜欢我的应用程序来支持2.2+。我尝试了以下内容,但是我发现findAll(弃用)和findAllAysnc的错误警告(需要增加最低SDK版本):

      if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) {
          myWebView.findAll(query);         
      else
      {
          myWebView.findAllAsync(query);
      }

处理这个问题的最佳方法是什么?我应该只使用findAll并忽略弃用警告吗?

3 个答案:

答案 0 :(得分:0)

使用findAll,如果警告真的太烦人,请添加@SuppressWarning("deprecation")注释以明确禁止它。

这样做的一个问题是,当您在方法上使用此注释时,您可能会错过其他已弃用的调用,因为它将应用于整个方法。

答案 1 :(得分:0)

我相信答案有几个方面:

您在清单中将最低SDK版本和目标SDK版本设置为什么?

同样的问题,但是在Eclipse(或者你正在使用的任何IDE)中,Android构建API属性?

(我的回答好像你的问题是“如何摆脱android lint警告”,而不是“如何正确修复警告”..)

答案 2 :(得分:0)

有一种非常有趣和强大的方式来做你想要的,它被称为反射。来自Oracle的Java documentation

  

反射通常被需要能力的程序使用   检查或修改在其中运行的应用程序的运行时行为   Java虚拟机。这是一个相对高级的功能,应该   只有掌握了基本面的开发人员才能使用   语言。

简而言之,反射允许您查明是否定义了类,您可以找到它的方法和属性,并在运行时调用类的功能!

我有一个应用程序需要处理Android 2.1设备上的音频焦点,但音频焦点不适用于那些版本,所以我使用这种技术。顺便说一下,这是一条坎坷的道路。我建议仔细阅读文档,并尝试遵循一些例子。