1
electronic 2018-12-11 21:47:54 +08:00
Handler Message
|
2
insomnia1232 2018-12-11 22:16:19 +08:00
这种最基础的东西百度一下都比来这强
|
3
xbigfat 2018-12-11 22:29:31 +08:00
同意楼上的观点,但是猜测你可能是新手所以没有百度,相信 v2er 们的回答。
我的回答是: Android 不允许在主线程中进行网络请求,所以可以通过异步回调的方式将网络请求结果分发到主线程中。 几乎都是通过这个方式来进行的。 厉害一点的可以用 RxJava、Retrofit、或者 OkHttpClient 发起请求。 Handler + Message 也可以,但是容易造成内存泄漏的问题。 我喜欢的方法是用 JDK 里面的 HttpUrlConnection + Thread + 手写 interface 做回调。 (回答错了请各位大佬指正) |
4
richard1122 2018-12-11 23:03:04 +08:00
|
5
MoHen9 2018-12-11 23:23:29 +08:00 via Android
搜索 okhttp+ retrofit+ rxjava2,网上一堆教程,使用起来非常爽,不用写回调,对 Java 的熟悉程度相对有点要求。
|
6
winterbells 2018-12-11 23:28:58 +08:00 via Android
rxjava
|
7
merpyzf 2018-12-11 23:34:27 +08:00 via Android
@xbigfat 在子线程中做请求结果的回调,最终被调用的方法不是仍然执行在子线程的么?所以如果需要更新 ui 还是需要切换线程的吧。
|
8
merpyzf 2018-12-11 23:43:21 +08:00 via Android
@xbigfat 不太清楚答主所说的喜欢使用“ HttpUrlConnection + Thread + 手写 interface 做回调"的原因在哪儿?和使用 Handler 一样如果没有通过静态内部类的方式创建 Thread 对象,其内部仍然会持有外部类的引用啊!如果线程所处的 activity 被关闭,而线程却没有执行完毕,这个时候仍然会出现内存泄露的问题啊!
|
10
nestorm001 2018-12-12 08:42:15 +08:00
建议看看 SDK 里 Handler、Looper、Message 和 MessageQueue 的源码
|
11
glaucus 2018-12-12 10:57:01 +08:00
Retrofit,回调方法自动切到主线程
|