2014-02-26 119 views
4

我喜欢在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并忽略弃用警告吗?

回答

0

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

这样做的一个问题是,当你在你的方法中使用这个注解时,你可能会错过其他不推荐使用的调用,因为它将应用于整个方法。

+0

我的错误,正确的注释参数是“deprecation”,“dep-ann”是旧的javadoc,如果我记得不好的话。 –

0

我相信这个答案在几个方面:

你在设置中表现为最小SDK版本和目标SDK版本?

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

(我回答是,如果你的问题是“我怎么摆脱Android的皮棉警告”,而不是“我怎么正确解决警告”。)

0

有一个非常有趣和做你想做的事情的强大方式,它被称为反思。从Oracle的Java documentation

反射通常是由需要的能力, 检查或修改在 Java虚拟机上运行的应用程序运行时行为的程序使用。这是一个相对高级的功能,只有对这些语言的基础知识 有深入了解的开发人员才能使用。

总之,反射让你看看类的定义,你可以找到它的方法和属性,并在运行时调用类的功能......一切!

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

+0

反射有比虚拟方法调用更多的开销,而这是一个强大的工具,它就像使用大锤钉在墙上。 – edthethird

+0

反射确实可以用于这种事情,并且确实非常强大,并允许在运行时检查API是否可用。不过,我认为避免编译警告并不是一个好主意,并且对于这样一个简单的用例来说确实是过度的。 –

+0

@edthethird我完全同意,这是一个工作的地狱,但如果要求是'必须'这是一个优雅的路要走。 – Merlevede

相关问题