JS关闭Android的Activity异常记录及解决

吐槽一下,现在的产品需求是越来越奇葩,越来越没有规则,越来越反人类的了。

今天产品那边说,需要在我们的app内嵌入一个广告的的H5,我们这边负责网页的加载就可以了,其他的诸如界面操作有他们自己实现,界面关闭由我们提供一个本地的方法供后台调用。

刚开始一想,嗯,这需求简单嘛,获取url,加载进去就ok,然后通过注解机制注入JavascriptInterface,并提供一个方法就可以了具体实现如下:

注解JavascriptInterface部分如下:

public final class Javascript {
    public Javascript() {
    }

    @JavascriptInterface
    public void closeCurrentActivity(){
        DailyPaperActivity.this.onBackPressed();
        DailyPaperActivity.this.finish();
    }
}

原以为这样ok了,但在调用的时候却发现,上述方法不管用,并且还抛了异常:

[INFO:CONSOLE(63)] "Error: Java exception was raised during method invocation", source: http://xxx.xx.xx.xx: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() {
    }
    @JavascriptInterface
    public void closeCurrentActivity(){
        DailyPaperActivity.this.finish();
    }
}

仔细一想。这算个什么事儿呢,什么原因引发了这个问题?

留下此问,继续思考。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值