特性: 支持自定义UI 支持多/单图片选择和预览,单图裁剪功能 支持gif 支持视频选择功能 提供图片压缩 多图生成gif(checkout feature/gif-encode) 效果图: ?...开发此项目主要是为展示各种开源库的使用方式以及 Android 项目的设计方案,并作为团队项目开发规范的一部分。...采用的开源库包括: RxJava Retrofit2 OKHttp3 ORMLite Dagger2 ButterKnife RetroLambda Stetho 本项目还展示了: MVP+RxJava...RxJava其他操作符来做延时、轮询、转化、筛选等操作 使用okhttp3对网络返回内容做缓存,还有日志、超时重连、头部消息的配置 使用Material Design控件和动画 使用MVP架构整个项目,...+ OkHttp3 做网络请求 OkHttp3 对网络返回内容做缓存, 还有日志、超时重连、头部消息的配置 V层基类的构建, 包括 BaseActivity 和 BaseFragment , 对外提供了相同的接口
Okhttp3相比HttpUrlConnection,更加优雅和高效,大部分其他Android App 的网络框架,都是基于Okhttp3的再封装。因此Okhttp3是本篇文章的重点和轴心。...1.1.3 Retrofit2 Retrofit2同样出自Square公司,Retrofit2是对Okhttp的封装。...综上所述,Okhttp3是今天的重点。 1.2 Okhttp3 DEMO App 使用Okhttp3简单写一个DEMO APP,使用Android Studio创建应用。...1.3 DEMO 流程分析 基于DEMO,在这部分介绍一些Okhttp3的知识点。....writeTimeout(5,TimeUnit.SECONDS)////设置写超时 .connectTimeout(15,TimeUnit.SECONDS)//设置连接超时
简介 本项目是一个学习类型的项目,主要是为了学习一些Android最新的思路和开发思想,工程按照模块化、组件化的开发思路进行开发,项目整体结构如下图。...,降低了耦合性; 网络使用 retrofit2 + okhttp3方式,进行了高度的封装; leakcanary 内存泄漏检测 基于MVI架构airbnb的Mavericks 本地mock alibaba...,随着应用程序的增长或添加功能或事先没有计划的功能,视图渲染和业务逻辑可能会变得有点混乱,并且这种情况经常发生在Android应用开发过程中。...MVI的架构思想来源于前端,由于Model、View和Intent三部分组成。 Model:与其他MVVM中的Model不同的是,MVI的Model主要指UI状态(State)。...网络okHttp3网络mavericksMVI框架BaseRecyclerViewAdapterHelper万能适配器PhotoView图片预览ARouter组件化路由coil图片加载XPopup弹窗组件
问题: 线上正式环境调用WCF服务正常,但是每次使用本地测试环境调用WCF服务时长就是出现:套接字连接已中止。这可能是由于处理消息时出错或远程主机超过接收超时或者潜在的网络资源问题导致的。...本地套接字超时是“00:05:30” 这个问题,查阅了网上很多资料各种说法的都有,有的说是什么请求站点不在同一个域下,有的说什么应为datatable中有一个属性没有赋值各种答非所问的问题。...其实从错误信息中就可以看出来其实就是调用超时了。...如果消息超出此限制,则发送方将收到 SOAP 错误。 接收方将删除该消息,并在跟踪日志中创建事件项。 默认值为 65536。 name 一个包含绑定的配置名称的字符串。
Retrofit2 是目前Android开发主流的网络库,RxJava2也是目前开发者使用的比较多用来更优雅实现异步的库,因为最近业务需求有用到这两个库,就简单分享下它的一个实际使用场景—上传文件 [TOC...具体配置文件在根目录下的config.gradle ext { android = [ compileSdkVersion: 25, buildToolsVersion...rxpermissions : "0.9.3@aar", retrofit : "2.2.0", okhttp3..." : "com.squareup.okhttp3:logging-interceptor:${dependVersion.okhttp3}", ] } 这是依赖的部分...写入超时 // 错误重连 builder.retryOnConnectionFailure(true);
DatagramSocketImplFactory 作用 : 定义用于数据包套接字实现的工厂; 接口使用环境 : DatagramSocket 使用该接口的方法 创建 套接字实例; 接口方法解析 : ...SocketImplFactory 作用 : 用于定义套接字实现工厂; 使用环境 : Socket 和 ServerSocket 使用该接口定义的方法 来创建套接字实例; 方法解析 : SocketImpl...; -- 套接字本地地址不可更改 : 套接字在创建的时候绑定本地地址, 因此不可更改; -- 套接字默认地址 : INADDR_ANY 表示 多穴主机 (有多个IP地址的主机) 的任何地址; SO_REUSEADDR...: 如果出现超时, 阻塞会继续执行, 但是会引发 InterruptedIOException 异常, Socket 不会关闭; -- 适用情况 : 该设置对所有的套接字 ( SocketImpl,..., 如果传入其它内容 都会启用该选项; -- 异常 : 如果选项匹配错误, 或者 socket 关闭 等错误, 就会报出 SocketException 异常; Object getOption(int
前言 上一篇介绍了OkHttp2.x的用法,这一篇文章我们来对照OkHttp2.x版本来看看,OkHttp3使用起来有那些变化。...:okio:1.7.0' 添加网络权限: android:name="android.permission.INTERNET"/> 2.异步GET请求 惯例,请求百度...在wangshu.txt文件中有一行字“Android网络编程(六)OkHttp3用法全解析”我们运行程序点击发送文件按钮,最终请求网络返回的结果就是我们txt文件中的内容 : ?...) throws IOException { Log.i("wangshu", response.body().string()); } }); } 6.设置超时时间和缓存...和OkHttp2.x有区别的是不能通过OkHttpClient直接设置超时时间和缓存了,而是通过OkHttpClient.Builder来设置,通过builder配置好OkHttpClient后用builder.build
点击此处下载贝壳找房Apk 点击此处下载反编译debug包 Apk存在的漏洞 下面进入正题,一文让你知道反编译贝壳APP到底有多简单! 首先下载上方链接的贝壳Apk,接下来进入简单的反编译工作!...反编译步骤 由于目标apk的安全性较低,步骤很简单: 通过apktool d反编译得到smali和AndroidManifest.xml文件 修改xml中application属性android...采用多dex打包,考虑到版本的问题(v1.4.2),这样的包大小已经远超出控制范围了。部分代码采用了kotlin编写。 ?...(api、统计)、okhttp3、okio、greenrobot、fastJson、pl.droidsonroids.gif、retrofit2、rx、tencent.tls、cn.shuzilm.core...插件化:贝壳的插件化采用的是360一样hook和占坑的方式,在im和账户页做了部分工作。 总体来说,贝壳是一个业务快速增长的APP,基于链家的背景,通过业务和产品定位不难带动用户的增长。
在Retrofit1中使用的是RestAdapter,而Retrofit2中使用的Retrofit实例,之前的setEndpoint变为了baseUrl。...Retrofit2通过OKHttp的拦截器拦截http请求进行监控,重写或重试等,包括日志打印等。...Retrofit1体验不好的地方: Retrofit1不能同时操作response返回数据(比如说返回的 Header 部分或者 URL)和序列化后的数据(JAVABEAN)。...OkHttp3中有一个Cache类是用来定义缓存的,此类详细介绍了几种缓存策略,具体可看此类源码。...最后来一张图看懂android内存结构,参考:Android文件存储使用参考 - liaohuqiu /** * | ($rootDir) * +- /data
该值至少为1,大部分应用程序设为5就可以了 s.accept() 接受TCP连接开返回(conn,addes ),其中conn 是新的套接字对象,可以用来接收和发送数据。...) 返回套接字选项的值 s.settimeout(timeout) 设置套接字操作的超时期,timcout 是一个浮点数,单位是秒。...值为None 表示没有超时期。...一般超时期应该在刚创建套接字时设置,因为它们可能会用于连接操作(如connect()) s.setblocking(flag) 如果fag 为0,则将套接字设为非阻塞模式,否则将套接字设为阻塞模式( 默认值...hello,android! hello,java!
最近加入了新的工作,Android产品用了RX+retrofit作为网络交互框架,以前完全没用过,只有自己补一补。这里与大家分享一下学习成果,也便于自己日后复习。...类似的文章特别多,封装也大同小异,特别记录一篇是希望自己将看过的东西能够真正理解变成自己的东西。...retrofit做网络请求想要打印请求信息,暂时只发现这个方法,不像OkHttp3可以直接拿到url。...NetObserver网络请求观察者 一个简单封装的网络请求统一观察者,对网路请求常见的错误进行了管理和打印。...message="数据解析出现错误"; } else { message = "未知错误"; } Log.e
函数 简单介绍 nn_socket 创建一个套接字 nn_setsockopt 设置套接字的选项 nn_bind 绑定地址 nn_connect 连接另一个套接字 nn_send 发送数据 nn_recv...接收数据 nn_socket 所在头文件:#include ,作用为创建一个套接字。...返回值:返回套接字。 nn_setsockopt 所在头文件:#include ,作用和原始socket开发中的setsockopt类似,用来设置套接字的选项。...nn_connect 所在头文件:#include ,作用连接另一个套接字。...返回值:返回发送数据的长度,小于零表示错误。 nn_recv 所在头文件:#include ,作用接收数据。
: A type-safe HTTP client for Android and Java 我简单翻译一下就是: 一个类型安全的、Android或者Java的客户端 通过使用注解去描述一个HTTP...当然你也可以选择android-async-http和Volley,但为什么选择Retrofit?...在Retrofit2之前,OkHttp是一个可选的客户端。二Retrofit2中,Retrofit与OkHttp强耦合,使得更好地利用OkHttp,包括使用OkHttp解决一些棘手的问题。...} 访问接口的定义 public interface uploadFileService { /** * 通过 List 传入多个part实现多文件上传...为什么可以这样写: Retrofit会判断@Body的参数类型,如果参数类型是okhttp3.RequestBody,则Retrofit不做包装处理,直接丢给okhttp3处理。
"default_socket_timeout") [,$flags = STREAM_CLIENT_CONNECT [ $context ]]]]] ) 1.remote_socket 要连接到的套接字的地址...对于Internet域套接字(AF_INET)(如TCP和UDP),remote_socket参数的目标部分应包含主机名或IP地址,后跟冒号和端口号。...对于Unix域套接字,目标部分应指向文件系统上的套接字文件。 注意:默认情况下,流将以阻塞模式打开。您可以使用stream_set_blocking($stream,1)将其切换到非阻塞模式。...2.errno 如果连接失败,将设置为系统级错误号。 3.errstr 如果连接失败,将设置为系统级错误消息。 4.timeout connect()系统调用应该超时之前的秒数。...注意: 要设置通过套接字读取/写入数据的超时,请使用stream_set_timeout(),因为仅在连接套接字时才应用超时。 5.flags 位掩码字段,可以设置为连接标志的任意组合。
对等体请使用自己生成的UUID 第三,四个类BluetoothSocket与BluetoothServerSocket 首先看下BluetoothSocket介绍: 蓝牙套接字接口类似tcp套接字...最常见的蓝牙套接字类型是RFCOMM,这是Android API支持的类型。 RFCOMM是面向连接的,通过蓝牙的流传输。 它也称为串行端口配置文件(SPP)。...一旦套接字已连接,无论是连接为客户端还是连接为服务端,通过调用getInputStream()与getOutputStream()来分别检索InputStream对象,这些对象分别自动连接到套接字。...BluetoothSocket是线程安全的,另外,close() 方法将立即终止正在进行的操作和关闭套接字。...下面来介绍下具体连接蓝牙功能的代码实现: 思路:如果将蓝牙连接与数据通信部分放在Activity中,那么假如退出Activity,套接字也会随着activity关闭,而且每打开一次Activity又
我在学习Android期间就是哪里有请求就放哪里,后来有人告诉我要集中存放。于是后来就建立一个AppURL.java所有地址都存放这里。...link RequestBody}、{@link okhttp3.MultipartBody.Part} 、任意类型; 动手测试:username的RequestBody 换成String是否可以 多文件上传...参数类 注1:{占位符}和PATH尽量只用在URL的path部分,url中的参数使用Query和QueryMap 代替,保证接口定义的简洁 注2:Query、Field和Part这三者都支持数组和实现了...本文部分内容来自于下面部分文章 鸿洋:http://blog.csdn.net/lmj623565791/article/details/51304204#t1 图片来源(经过作者授权拿的图):http...blog.csdn.net/ljd2038/article/details/51046512 http://blog.csdn.net/biezhihua/article/details/49232289 多文件上传参考
本篇博客,我将对Okhttp3进行分析(源码基于Okhttp3.4)。 如何引入Okhttp3?...配置Okhttp3非常简单,只需要在Android Studio 的gradle进行如下的配置: compile 'com.squareup.okhttp3:okhttp:3.4.1' 添加网络权限:...android:name="android.permission.INTERNET"/> Okhttp3的基本使用 okHttp的get请求 okHttp的一般使用如下...没有响应时使用超时结束call。...OkHttp支持连接,读取和写入超时。
accept * fd: 套接字 * addr: 输出参数,返回对方地址 * wait_seconds: 等待超时秒数,如果为0表示正常模式 * 成功(未超时)返回已连接套接字,失败返回-1,超时返回... return -1; else if (ret == 1) { /* ret返回为1,可能有两种情况,一种是连接建立成功,一种是套接字产生错误...还需要注意的是当select 返回1,可能有两种情况,一种是连接成功,一种是套接字产生错误,由这里可知,这两种情况都会产生可写事件,所以需要使用getsockopt来获取一下。...退出之前还需重新将套接字设置为阻塞。...connect_timeout: Connection refused 很明显是connect_timeout 函数返回了-1,我们也可以推算出connect_timeout 函数中,select返回1,但却是套接字发生错误的情况
9.超时 ?...异常;若请求超时,会抛出一个Timeout异常。...套接字起源于20世纪70年代加州伯克利分校版本的Unix,即BSD Unix,又称为“伯克利套接字”或“BSD套接字”。...要创建TCP套接字就得创建时指定套接字类型为SOCK_STREAM。TCP套接字这个类型表示它作为流套接字的特点。...那么这么多缺点,为什么还要使用它呢?由于面向连接套接字要提供一些保证,需要维护虚电路连接,这都是严重的额外负担。
原文博客:Doi技术团队 链接地址:https://blog.doiduoyi.com/authors/1584446358138 初心:记录优秀的Doi技术团队学习经历 OKhttp3...response) throws ServletException, IOException { this.doPost(request, response); } } 客户端 使用OKhttp3....writeTimeout(20, TimeUnit.SECONDS) //读取超时 .readTimeout...run() { OkHttpClient client = new OkHttpClient.Builder() //连接超时...public void run() { Toast.makeText(getApplicationContext(), "账号或密码错误
领取专属 10元无门槛券
手把手带您无忧上云