Wie kann Android die aktuelle Benutzeroberfläche aktualisieren, wenn es einen Push in BroadcastReceiver erhält?
ringa_lee
ringa_lee 2017-05-24 11:37:50
0
3
1039

Mit Xiaomi Push.

Dann habe ich die von Xiaomi in der in BroadcastReceiver integrierten Klasse erhalten, möchte aber gleichzeitig die ungelesenen Daten auf der Benutzeroberfläche aktualisieren. Was soll ich tun?

ringa_lee
ringa_lee

ringa_lee

Antworte allen(3)
洪涛

带上数据再发一个自家app的广播到对应的需要处理的UI类上

过去多啦不再A梦

不知道你说的UI上的未读数指的是launcher上的icon右上角角标还是app里面UI的未读数,前者的话跟开发者无关,国内厂商的系统都会自动统计app收到的通知数,后者的话在onReceivePassThroughMessage(Context context, MiPushMessage message)方法中通过解析message做相应的操作

    @Override
    public void onReceivePassThroughMessage(Context context,MiPushMessage message){
        mMessage=message.getContent();
        if(mMessage != null){
          //更新消息数目
        }
    }

如何更新消息数目方式就比较多了,选一个合适的即可。比如可以被动展示:维护一个sharedPreference msgCout, 在对应页面获取msgCount展示到UI上;或者主动展示:可以在要展示消息数目的界面注册一个广播,在上面的代码中发送消息到这个广播,也可以使用EventBus发送消息等等

世界只因有你

BroadcastReceiver 做耗时操作会导致ANR,而且这里面也没办法直接修改UI,在我们项目中,使用RxBus去通知UI更新,一般的话可以使用EventBus,楼上说的Sp中也可以,但这种并不会直接去修改UI,而是需要自己手动去刷新,如果使用MVP架构的话,直接可以在presenter中去调方法更新

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage