Android 线程间通信全部用广播,有什么坏处吗? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
treePerson
V2EX    Android

Android 线程间通信全部用广播,有什么坏处吗?

  •  
  •   treePerson 2021-01-08 07:39:31 +08:00 13320 次点击
    这是一个创建于 1803 天前的主题,其中的信息可能已经有所发展或是发生改变。

    感觉广播比 Handler 方便多了,直接就 send,不用先传个实例才能回话

    8 条回复    2021-01-08 10:38:47 +08:00
    MaL
        1
    MaL  
       2021-01-08 07:45:56 +08:00 via Android
    如果是一般广播的话,那就太重了,可以用本地广播或 eventbus
    Helsing
        2
    Helsing  
       2021-01-08 08:11:06 +08:00 via iPhone
    尽量少用吧,要不最后到处都是满天飞的广播,看的头大
    towry
        3
    towry  
       2021-01-08 08:34:20 +08:00
    不要只考虑写的时候有多爽,要考虑以后容不容易修改 /调试
    wolegequ
        4
    wolegequ  
       2021-01-08 09:13:43 +08:00
    能用就行,产品有人用再说. 某宝的 app 卡成翔也没见他们优化
    kop1989
        5
    kop1989  
       2021-01-08 09:19:15 +08:00
    软件开发层面就是不好维护。
    广播相当于是一个低耦合链接。
    假设你有需求要修改某个广播的信息格式或者传参数量。
    这时候编译器帮不了你,你很难确认你发送端和接收端都改对了 /改全了。只能不断的测试。

    而且细节处理不好还会有安全性问题。
    k10ndike
        6
    k10ndike  
       2021-01-08 09:30:44 +08:00   1
    可以用 LiveData
    jinhan13789991
        7
    jinhan13789991  
       2021-01-08 09:44:27 +08:00
    我目前是维护很多 LiveData,说白了就是另一种广播。
    只不过发送和订阅都抽成了独立的接口。优点就是不会混乱,缺点就是每次有新的需求就要再写一个专门的方法。
    后面在考虑抽成一个通用的方法,通过枚举保证唯一。
    BrokenVns
        8
    BrokenVns  
       2021-01-08 10:38:47 +08:00   2
    广播是基于异步 binder 的,异步 binder 存在以下小问题:
    1.能够传递的数据量是同步 binder 的一半( 0.5M-4K ).
    2.异步 binder 的消息传递优先级不高,可能会出现广播接收延迟问题,这种现象在 binder 流量大的老机器更明显。
    3.你不知道异步 binder 传递是否成功了,碰到过通信失败而引发的 ANR 问题。
    广播自身也有些小问题,比如广播要先发送给 AMS 再由 AMS 进行分发,跨了两次进程,广播是透明的等。

    少量使用动态广播,可以减少开发量。
    大量使用异步通信的话,还是建议使用 Looper-Handler 、开源库或者造轮子
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3475 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 10:37 PVG 18:37 LAX 02:37 JFK 05:37
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86