今天測試突然給我說我寫的XX界面一點app就crash了!
納尼,我肯定表示不服啊!怎么可能出現一點擊就崩潰的情況呢,明明自己的測試了的!
然后我又用自己的測試機試了下沒問題(Version:5.0.2),然后又使用crash的測試手機(Version:4.4),乖乖,居然是4.4才會出現的情況!(4.4以下沒有驗證哈!可能都會吧!!!)
log顯示:
W/System.err: java.lang.NoClassDefFoundError: android/os/PersistableBundle W/System.err: at java.lang.Class.getDeclaredMethods(Native Method) W/System.err: at java.lang.Class.getDeclaredMethods(Class.java:656) W/System.err: at de.greenrobot.event.SubscriberMethodFinder.findSubscriberMethods(SubscriberMethodFinder.java:75) W/System.err: at de.greenrobot.event.EventBus.register(EventBus.java:163) W/System.err: at de.greenrobot.event.EventBus.register(EventBus.java:133)
接著當然就是google 了!
最終找到了出現這個error的原因:
@Overridepublic void onCreate(Bundle savedInstanceState, PersistableBundle persistentState) { super.onCreate(savedInstanceState, persistentState);}@Overridepublic void onSaveInstanceState(Bundle outState, PersistableBundle outPersistentState) { super.onSaveInstanceState(outState, outPersistentState);}@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);}@Overrideprotected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState);}注意在寫Activity的時候,如果使用了public 兩個Bundle參數的方法,那么在4.4的機器上就會出現crash的情況!
至于為撒就還沒有去細究,本質上,兩個參數的其實還是走的一個參數的方法。。
public void onCreate(@Nullable Bundle savedInstanceState, @Nullable PersistableBundle persistentState) { onCreate(savedInstanceState);}所以在寫這些回調的時候不要馬虎大意了,記得是復寫protected開頭的!!!
新聞熱點
疑難解答