异常记录及解决"/>
JS关闭Android的Activity异常记录及解决
吐槽一下,现在的产品需求是越来越奇葩,越来越没有规则,越来越反人类的了。
今天产品那边说,需要在我们的app内嵌入一个广告的的H5,我们这边负责网页的加载就可以了,其他的诸如界面操作有他们自己实现,界面关闭由我们提供一个本地的方法供后台调用。
刚开始一想,嗯,这需求简单嘛,获取url,加载进去就ok,然后通过注解机制注入JavascriptInterface,并提供一个方法就可以了具体实现如下:
注解JavascriptInterface部分如下:
public final class Javascript {public Javascript() {}@JavascriptInterfacepublic void closeCurrentActivity(){DailyPaperActivity.this.onBackPressed();DailyPaperActivity.this.finish();}
}
原以为这样ok了,但在调用的时候却发现,上述方法不管用,并且还抛了异常:
[INFO:CONSOLE(63)] "Error: Java exception was raised during method invocation", source: :xxxx/app/view/topic-demo/topc-demo.html?token=xxxxxxxxxxxxxxxx&diviceId=xxxxxxxxxxxxxxx&appType=Android (63)
异常的大体意思是说,加载那个url的界面的Java代码执行出现异常,异常发生在js代码的第63行,而JS代码第63行对应的Java代码则是:
DailyPaperActivity.this.onBackPressed();
一下子懵逼了,这个方法还异常了?但也没说具体是什么异常,不知道解决方案,好吧,有事找度娘,百度一下一大堆,包括stackoverflow,无一例外的都是提到更新UI的时候要报这个错,都有没有提到关闭Activity的情景。后来一同行做过这种需求,喊我尝试下注销掉onBackPressed方法这行,直接finish。嗯,算是一个思路,尝试下。
一注消,确实。能够顺利的关闭Activity,也没用异常或者warn信息出现。问题就这么完美的解决了。
public final class Javascript {public Javascript() {}@JavascriptInterfacepublic void closeCurrentActivity(){DailyPaperActivity.this.finish();}
}
仔细一想。这算个什么事儿呢,什么原因引发了这个问题?
留下此问,继续思考。
更多推荐
JS关闭Android的Activity异常记录及解决
发布评论