Java 从URL同步获取少量数据

Java 从URL同步获取少量数据,java,android,ios,kotlin,url,Java,Android,Ios,Kotlin,Url,所以我的url上只有一个小图标,每个只有几kb,每个url只有一个。所以基本上我试图实现的是从URL获取图标,但不是将此操作推送到后台线程,而是尝试同步获取它 iOS上也可能有类似的功能,例如NSData提供: init(contentsOf url: URL, options readOptionsMask: NSData.ReadingOptions = []) throws 使用此方法将data://URL转换为NSData对象。你可以 还可以使用它同步读取短文件 所以我的想法是以字节

所以我的url上只有一个小图标,每个只有几kb,每个url只有一个。所以基本上我试图实现的是从
URL
获取图标,但不是将此操作推送到后台线程,而是尝试同步获取它

iOS上也可能有类似的功能,例如
NSData
提供:

init(contentsOf url: URL, 
options readOptionsMask: NSData.ReadingOptions = []) throws
使用此方法将data://URL转换为NSData对象。你可以 还可以使用它同步读取短文件

所以我的想法是以字节的形式读取URL的内容。到目前为止,我在Android上找到的关于这个和
URL
的一切都是基于
openConnection()
getInputStream()
方法的。众所周知,Android将不允许在主线程上执行此操作。所以我的问题是:


有没有一种方法可以像在iOS上一样,从URL同步获取少量数据,而不在后台线程上移动?

是的,如果您使用的是OkHttp,那么
execute()
将运行阻塞请求,如果您使用的是任何基于协程的库,那么您可以始终将调用包装在
runBlocking{}下
。但即使文件很小,也不应该阻止主线程,因为它负责应用程序的响应。如果用户使用的网络速度非常慢,比如1Kbps,那么你的应用程序会不会太慢?您应该始终将IO分派到后台线程。