网络请求怎么样和UI线程交互? Activity2怎么通知Activity1 更新数据

时间:2021-02-09 10:30:07
1、网络请求怎么样和UI线程交互?
目前我的做法是,建立线程池管理网络请求线程,通过添加task来新增网络请求。所有的网络操作通过统一的request来实现,网络返回结果通过回调onError和onSuccess来实现对结果的处理(涉及到ui部分用runOnUiThread or handler通知ui更新,工程上两种都有,主要看你喜欢,不过用handler请注意内存泄露问题。。。)
这种做法好处就是,线程池可以避免不断开启线程导致虚耗资源,同时可以做到管理线程,自定义任务执行的顺序。统一request和回调的原因在于,不需要为每一个请求特例化,直接在回调中做自定义处理。
当然,若要通用化,最好还是使用manager把这些都包装好再使用,做到分工明确。
 
2、Activity1打开Activity2,那么Activity2怎么通知Activity1更新数据?(不能用Intent)
个人觉得最牛掰的写法是广播,或者watcher。牛掰的原因是,不管你要通知多少个activity更新都可以做到,只要注册了消息。
广播就是注册监听事件,然后发送者发送消息,有兴趣的人注册要监听的消息就可以在广播者发送消息时收到。
watcher观察者模式道理差不多,是告知通知者说我对某个消息有兴趣,有该消息就通知。