第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

安卓中如何捕獲native信號異常,在c底層通過反射調(diào)用即將結(jié)束的Activity里的方法

安卓中如何捕獲native信號異常,在c底層通過反射調(diào)用即將結(jié)束的Activity里的方法

慕田峪9158850 2019-03-21 21:15:51
前言在安卓系統(tǒng)中運行,主要會碰到四種異常,造成應用崩潰退出runtimeException.ANR.自己寫的JNI類和C代碼產(chǎn)生的信號異常.第三方so包造成的Native信號異常.因為我們公司的應用要求絕對不能發(fā)生崩潰退出的現(xiàn)象,所以我著手處理這四種異常,前三者都很容易處理(可以通過繼承UncaughtExceptionHandler ;或者通過收聽系統(tǒng)ANR廣播;或者自己寫C中模仿java中的try-cache功能捕獲信號異常并處理),就第四種比較棘手.捕獲native異常需要做兩步工作在c底層捕獲到native信號收到native信號之后,在c層的信號處理函數(shù),通過反射,調(diào)用java中的方法;在c底層捕獲到native信號也很簡單,使用signal注冊即可,收到native信號之后,就直接走到信號處理函數(shù)中了.最麻煩的是第二步,如何反射回去.目前碰到的問題目前的問題是,如何收到native信號之后,在c語言的信號處理函數(shù)中,通過反射調(diào)用Java中的方法.普通的c層通過反射調(diào)用java層的方法也是沒有問題的,但是目前的問題是,在信號處理函數(shù)中,無法調(diào)用,或者是沒有效果,因為當捕獲到信號的時候,原來的進程馬上就要關閉了.我目前的試過的方法有在信號處理函數(shù)中,調(diào)用原Activity的方法,不好用在信號處理函數(shù)中,調(diào)用另一個進程的Activity的方法(在清單文件中配置process),不好用.在信號處理函數(shù)中,拋出異常,拋不出去.在信號處理函數(shù)中,拋出異常(提前取消默認的關閉操作),可以拋出,但是不會被java層的異常捕獲類所抓住(但是不是在信號處理函數(shù)中拋的,是可以被抓住并處理的).
查看完整描述

2 回答

?
波斯汪

TA貢獻1811條經(jīng)驗 獲得超4個贊

(env)->CallVoidMethod(env, obj, methodID, (env)->NewStringUTF(env, "你好世界"));在錯誤發(fā)生之前是可以回調(diào)到的,但是異常發(fā)生后就回調(diào)不到了


查看完整回答
反對 回復 2019-04-19
  • 2 回答
  • 0 關注
  • 714 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號