Activity调用isDestroyed()方法报出,java.lang.NoSuchMethodError

在测试App的过程中,Activity调用了isDestroyed()方法,报出了java.lang.NoSuchMethodError错误。

自己手机MI 2S,版本4.1.1。

其实原因就是isDestroyed()这个方法是在4.2引入的,所以在4.1.1上调用此方法会报错。

需要做一下版本的判断了,Build.VERSION.SDK_INT < 17。

那么问题来了,如何判断某个函数引入的版本呢?从android开发者网站就可以发现,

其实想在源码里面看到,可是源码里面没有说明。

https://developer.android.com/reference/android/app/Activity.html#isDestroyed()

总结:调用方法的时候需要注意几点:

(1)注意此方法引入的API版本号;

(2)最好不要调用@Deprecated标记类和方法之类的,因为第三方可能会删除被@Deprecated标记的源码;

(3)标记@Hide的也最好不要调用,记得初学的时候,蛮多人使用反射的方式获取私有的数据和调用相应的方法,当时觉得还蛮具有研究精神的;

重点:当自己现在站在维护的角度,很多用户在用你的产品,各种不同的手机、型号的出现,导致出现的不同的bug。遵守上述的规则,就显得很有意义了。

附上一些比较好的文章:

精神哥讲Crash(一):UnsatisfiedLinkError

精神哥讲Crash(二): java.lang.NoSuchMethodError

小萝莉说Crash(一):Unrecognized selector sent to instance xxxx

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-11-13 09:32:49

Activity调用isDestroyed()方法报出,java.lang.NoSuchMethodError的相关文章

Struts2中使用execAndWait后,在 Action中调用getXXX()方法报告java.lang.NullPointerException异常的原因和解决方法

使用 Struts2 编写页面,遇到一个要长时间运行的接口,因此增加了一个execAndWait ,结果在 Action 中调用 getContext()的时候报告异常 1 ActionContext context = ActionContext.getContext(); 2 ServletContext servletContext = (ServletContext) context.get(ServletActionContext.SERVLET_CONTEXT); //抛空指针异常

记一次使用修改字节码的方法解决java.lang.NoSuchMethodError

接兔兔国际sdk ane 充值界面选择兔币充值就会闪退, 观察logcat ,NoSuchMethodError: com.tutu.common.a.b.getContext 原来是因为没有方法找不到 04-19 10:10:54.224: E/AndroidRuntime(20315): FATAL EXCEPTION: main 04-19 10:10:54.224: E/AndroidRuntime(20315): Process: com.tutusdk.global.demo, PI

java.lang.NoSuchMethodError: no static or non-static method 解决方法

最近在调试JNI的时候报了一个莫名其妙的错误,同一种类型的函数可以注册成功,不同类型的就会抛出一项异常: E AndroidRuntime: java.lang.NoSuchMethodError: no static or non-static method "Lcom/sprd/validationtools/phasecheckjni/PhaseCheckJNI;.eng_writephasecheck(III)I" E AndroidRuntime: at java.lang.

关于 java.lang.NoSuchMethodError: antlr.collections.AST.getLine()的解决方法

主题:java.lang.NoSuchMethodError: antlr.collections.AST.getLine()的解决方法 问题: 在进行SSH框架整合时会出现java.lang.NoSuchMethodError: antlr.collections.AST.getLine(): 原因: 出现的问题是struts里面的 antlr-2.7.2.jar和hibernate 里面的anltr-2.7.6.jar. 解决办法: 1.如果是自己导入的Jar包,将anltr-2.7.2.j

Java操作某方法时报错:java.lang.NoSuchMethodError

Caused by: java.lang.NoSuchMethodError: org.apache.poi.xssf.usermodel.XSSFWorkbook.close()V 一开始以为代码写错了,经过查阅,还有其他人也遇到类似的情况:方法后出现V,M等字母 问题原因: jar包引入版本冲突.在项目的另一个路径下有相同的jar包或者不同版本的jar包,导致JVM读取到了错误的class文件. 解决方案: 删除重复jar包,删除错误版本的jar包 参考链接:http://blog.sina

java.lang.NoSuchMethodError: ognl.SimpleNode.isEvalChain(Lognl/OgnlContext;)Z解决方法

运行JavaEE项目时出现如下错误: java.lang.NoSuchMethodError: ognl.SimpleNode.isEvalChain(Lognl/OgnlContext;)Z at com.opensymphony.xwork2.ognl.OgnlUtil.isEvalExpression(OgnlUtil.java:245) at com.opensymphony.xwork2.ognl.OgnlUtil.checkEnableEvalExpression(OgnlUtil.

Hibernate常见错误:java.lang.NoSuchMethodError: org.hibernate.SessionFactory.openSession()Lorg/hibe

hibernate4 与 spring3有点冲突 http://blog.csdn.net/gyflyx/article/details/7632645 整合NoSuchMethodError错误 and 升级Spring3.1RC2 和Hibernate4.0.0CR7遇到的一些问题及解决 2012-02-20 10:33:28|  分类: 编程_SSH |字号 订阅 我使用的是hibernate4和spring3,然后报的错误是 java.lang.NoSuchMethodError: or

修改Hibernate实体类字段int为Integer产生java.lang.NoSuchMethodError

问题描述: 在将Hibernate实体类字段int为Integer产生java.lang.NoSuchMethodError,但是明明是有这个方法的,但是一直说没有这个方法.后经仔细对比字节码文件,发现jdk在编译字节码时,会对相关方法进行处理. 详细编译情况如下: 原始代码: net.setPushstatus(Integer.parseInt(pushstatus)); 实体类属性字段类型为int 时编译的代码: net.setPushstatus(Integer.parseInt(push

【报错】项目启动部署时报错:java.lang.NoSuchMethodError

报错: ===================================================================================================== 项目启动部署报错: java.lang.NoSuchMethodError: org.springframework.util.ReflectionUtils.doWithLocalFields(Ljava/lang/Class;Lorg/springframework/util/Ref