Android组件之间通信

    xiaoxiao2022-07-02  112

    App内部组件通信

    Intent添加bundle广播cotentProvider(更适合跨进程)eventBus(反射调用)RxBus (可能会产生内存泄漏,需要在页面销毁时切断订阅关系)liveDatabus 谷歌推荐,与页面生命周期绑定,只会在页面start/resume状态下才会发送消息,反之不会发送

    注意事项 — 内存泄漏问题

    如RxBus,一般你只需要订阅如下代码:

    task = rxBus.toObserverable(DataBean.class) .subscribe(card -> { //主线程操作 if(cardNo != null){ cardNo.setText(getString(R.string.pcard_no, card.getCardNum())); } });

    以上我们一般在Activity中启动时订阅,调用网络访问后,根据RxBus注册事件类型返回到Activity中更新UI;但是必须在Activity的onDestroy时切掉task,会产生内存泄漏,下次重新打开并且也会造成异常

    io.reactivex.exceptions.OnErrorNotImplementedException: Fragment HashPCardFragment{b1ee517} not attached to a context.
    最新回复(0)