zoukankan      html  css  js  c++  java
  • 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



  • 相关阅读:
    开启Spring Boot 之旅
    Java笔试面试练习题---集合
    Python
    Python
    Redis -下载与基本使用
    Git
    Vue全家桶-Vue-router&Vuex
    Es6
    Vue-前端
    Django基础及实战
  • 原文地址:https://www.cnblogs.com/clnchanpin/p/6873327.html
Copyright © 2011-2022 走看看