java.lang.RuntimeException: Unable to instantiate activity

今天發現自己的APP在AS中調試是可以正常使用的,但是將APK復制到手機中,發現出現閃退的問題。
從Log中有下面的錯誤:
java.lang.RuntimeException: Unable to instantiate activity ComponentInfo

   根據網上查到三種情況,但是對比代碼沒有發現什么問題。 
   解決辦法:重新打開項目,clean project一下,重新build APK,然后將APK復制到手機中就可以了。
   根本原因: 第一個APK是debug過程中生成的APK,而Debug是選擇Instant Run。

不能實例化activity有如下三種情況:
1.沒有在Manifest.xml 清單中注冊該activity,或者在創建完activity后,修改了包名或者activity的類名,而配置清單中沒有修改,造成不能實例化。
2.自己新建了一個包,而注冊時候依然用的默認包,例如,默認包是com.ghg.Dao包,你新建了一個com.ghg.DaoImpl包,并在此包中寫了個FirstActivity,在manifest.xml中注冊時你寫的是<activity android:name=".FirstActivity"/>,此時相當于你在的類注冊到了默認包中,系統在默認包中是找不到的,因為你的FirstActivity在com.ghg.DaoImpl包下,所以你注冊時應寫成包名加類名,如:<activity android:name="com.ghg.DaoImpl.FirstActivity";這樣系統才能在指定的包中找到對應的類。
3.還用一種就是你的FirstActivity定義成了抽象類,這種情況好像一般人不會犯。
如果上述三種情況都考慮到了,還會拋出此異常,那么就查看一下activity類里是否同時存在這個類的構造函數和oncreate(),如果是,那么刪除構造函數試試,并把初始化放到
oncreate()中試試。

增加第4種:
項目代碼移動另外的目錄中,需要將app/build目錄刪除,然后重新編譯就可以了。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,315評論 25 708
  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,933評論 18 139
  • 一轉眼,我已經堅持慧兒發給我練馬甲線的課程已有2個周期了??。我一直以為以我現在忙綠的狀態,要完成,幾乎是...
    迭代鳳兒閱讀 132評論 0 1
  • 很久以前就想寫一本關于自己的書,可是無奈自己太小,寫了大多看不懂,也想不出可以吸引人的題目,最近看了《鄭爽的書》,...
    李菲凡閱讀 299評論 0 1
  • 摘要:對于2017云棲大會,更多的是感動,感動與科技的進步,感動于大家對于技術的不懈追求,感動于我們所處的時代,處...
    肆虐的悲傷閱讀 123評論 0 0