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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了网络请求怎么样和UI线程交互? Activity2怎么通知Activity1 更新数据相关的知识,希望对你有一定的参考价值。

1、网络请求怎么样和UI线程交互?
目前我的做法是,建立线程池管理网络请求线程,通过添加task来新增网络请求。所有的网络操作通过统一的request来实现,网络返回结果通过回调onError和onSuccess来实现对结果的处理(涉及到ui部分用runOnUiThread or handler通知ui更新,工程上两种都有,主要看你喜欢,不过用handler请注意内存泄露问题。。。)
这种做法好处就是,线程池可以避免不断开启线程导致虚耗资源,同时可以做到管理线程,自定义任务执行的顺序。统一request和回调的原因在于,不需要为每一个请求特例化,直接在回调中做自定义处理。
当然,若要通用化,最好还是使用manager把这些都包装好再使用,做到分工明确。
 

2、Activity1打开Activity2,那么Activity2怎么通知Activity1更新数据?(不能用Intent)
个人觉得最牛掰的写法是广播,或者watcher。牛掰的原因是,不管你要通知多少个activity更新都可以做到,只要注册了消息。
广播就是注册监听事件,然后发送者发送消息,有兴趣的人注册要监听的消息就可以在广播者发送消息时收到。
watcher观察者模式道理差不多,是告知通知者说我对某个消息有兴趣,有该消息就通知。
 
 

以上是关于网络请求怎么样和UI线程交互? Activity2怎么通知Activity1 更新数据的主要内容,如果未能解决你的问题,请参考以下文章

AsyncTask - 基本原理 后台线程和UI线程的交互

转载Android中UI线程与后台线程交互设计的5种方法

Android 怎么启动一个工作线程及线程如何与UI线程交互

Android Handler 的使用

『进阶之路』—— 线程池

浏览器中包含什么?三个常驻线程?