博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
BaseActivity继承FragmentActivity的一个问题
阅读量:6874 次
发布时间:2019-06-26

本文共 1301 字,大约阅读时间需要 4 分钟。

hot3.png

我自己写的一个抽象BaseActivity,让其继承FragmentActivity,

继承之后,会产生一个bug,

就是在一个子类的Activity 调用onDestroy方法里, 会抛出异常,

163326_NwjP_988826.png

网上搜索这个bug产生的原因,大部分解释都是说, 是由于Fragment嵌套Fragment产生的, 但是我这里不是这个原因啊,

经过一晚上乱摸, 找到如下方法解决了这个问题: 

   @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);    }

但是这里是什么原因产生这个问题的呢?

一直无法找到, 貌似是子类的onDestory()方法被调用了两次, 第一次就将activity自己消灭了, 然后第二次消息队列中还有消息,然后又执行一次, 就抛出  no Activity的异常了, 但是真的是这个原因吗? 我debug 不到第二次运行的代码.纯属猜测, 如果有高手偶然看见这个问题, 指点下.

转载于:https://my.oschina.net/wangxnn/blog/358116

你可能感兴趣的文章
图的遍历方法(深度优先和广度优先算法)
查看>>
鸟巢-一种全新的Native APP开发模式,这篇文章为您解读
查看>>
shell批量查询IP
查看>>
快速生成移动设备应用图标的在线工具 - makeappicon
查看>>
学习linux决心书
查看>>
SVN服务的搭建
查看>>
ISO 9126质量模型:软件质量模型的6大特性和27个子特性
查看>>
一个 rm -rf的教训
查看>>
几何画板添加背景图片方法
查看>>
用main函数传参做简单的计算器的代码
查看>>
Bash终端命令行,使用privoxy将socks代理转成http代理
查看>>
Linux基础命令
查看>>
if case 语句 find locate 文件查找 和 压缩解压缩工具 简介
查看>>
Linux常用命令——tr
查看>>
检测 ip 是否断开,并使用邮箱报警
查看>>
整理第一周学习C的知识点
查看>>
Spring Data JPA 实例查询
查看>>
ping多线程
查看>>
PMP每日一题
查看>>
python中struct.unpack的用法
查看>>