BaseActivity繼承FragmentActivity的一個問題

我本身寫的一個抽象BaseActivity,讓其繼承FragmentActivity,java

繼承以後,會產生一個bug,ide

就是在一個子類的Activity 調用onDestroy方法裏, 會拋出異常,this


網上搜索這個bug產生的緣由,大部分解釋都是說, 是因爲Fragment嵌套Fragment產生的, 可是我這裏不是這個緣由啊,spa

通過一夜亂摸, 找到以下方法解決了這個問題: debug

   @Override
    protected void onDestroy() {
    	activityState = ACTIVITY_DESTROY;
    	L.i(this, "---------onDestroy ");
    	
     

	 //用BaseActivity繼承FragmentActivity時會報一個異常, 
	 // java.lang.IllegalStateException : No activity
	 //爲了不這個問題, 反射獲得父類FragmentActivity的一個成員mHandler, 移除掉其全部的消息隊列
        try {  
            java.lang.reflect.Field fHandler = FragmentActivity.class.getDeclaredField("mHandler");  
            fHandler.setAccessible(true);  
            Handler handler = (Handler) fHandler.get(this);
            if(handler != null){
            	handler.removeCallbacksAndMessages(null);
            }
        } catch (NoSuchFieldException e) {  
            throw new RuntimeException(e);  
        } catch (IllegalAccessException e) {  
            throw new RuntimeException(e);  
        } 
        
    	
        super.onDestroy();
        AppManager.getAppManager().finishActivity(this);
    }

可是這裏是什麼緣由產生這個問題的呢?code

一直沒法找到, 貌似是子類的onDestory()方法被調用了兩次, 第一次就將activity本身消滅了, 而後第二次消息隊列中還有消息,而後又執行一次, 就拋出  no Activity的異常了, 可是真的是這個緣由嗎? 我debug 不到第二次運行的代碼.純屬猜想, 若是有高手偶然看見這個問題, 指點下.繼承

相關文章
相關標籤/搜索