IntentService 与 Service的区别:(service(不是单独进程和应用程序同进程)intentService(是一个处理异步请求类,专处理耗时任务))
service
- Service 是长期运行在后台的应用程序组件 。
- Service 不是一个单独的进程,它和应用程序在同一个进程中,
- Service 也不是一个线程,它和线程没有任何关系,所以它不能直接处理耗时操作。
- 如果直接把耗时操作放在 Service 的 onStartCommand() 中,很容易引起 ANR .如果有耗时操作就必须开启一个单独的线程来处理
IntentService
- IntentService 是继承于 Service 并处理异步请求的一个类,在 IntentService 内有一个工作线程来处理耗时操作,
启动 IntentService 的方式和启动传统 Service 一样,同时,当任务执行完后, IntentService 会自动停止 ,而不需要我们去手动控制。 - 另外,可以启动 IntentService 多次,而每一个耗时操作会以工作队列的方式在IntentService 的 onHandleIntent 回调方法中执行,
- 并且,每次只会执行一个工作线程,执行完第一个再执行第二个, 有序执行
IntentService :使用场景——
(分析源码得下面) - IntentService是继承于Service并处理异步请求的一个类,在IntentService内有一个工作线程来处理耗时操作,
启动IntentService的方式和启动传统Service一样,同时,当任务执行完后,IntentService会自动停止,而不需要我们去手动控制。
另外,可以启动IntentService多次,而每一个耗时操作会以工作队列的方式在IntentService的onHandleIntent回调方法中执行,并且,每次只会执行一个工作线程,执行完第一个再执行第二个,以此类推。
IntentService与Service的不同:
(1)直接 创建一个默认的工作线程,该线程执行所有的intent传递给onStartCommand()区别于应用程序的主线程。
(2)直接创建一个工作队列,将一个意图传递给你onHandleIntent()的实现,所以我们就永远不必担心多线程。
(3)当请求完成后自己会调用stopSelf(),所以你就不用调用该方法了。
(4)提供的默认实现onBind()返回null,所以也不需要重写这个方法。so easy啊
(5)提供了一个默认实现onStartCommand(),将意图工作队列,然后发送到你onHandleIntent()实现。真是太方便了
我们需要做的就是实现onHandlerIntent()方法,还有一点就是经常被遗忘的,构造函数是必需的。
简单说呢?第一,我们省去了在Service中手动开线程的麻烦,第二,当操作完成时,我们不用手动停止Service
Http和Https的区别
http
- 明文传输
- 没有验证通讯双发身份
- 无法保证数据完整性
https
- 经由http通讯,利用SSL/TLS建立安全信道,加密数据包,https使用的主要目的是提供对网络服务器的身份认证,同时保护交换数据的隐私和完整性
- Http + SSL = Https = Http + 身份认证 + 数据私密 + 数据完整性
- SSL(Secure Socket Layer) 并不是 Http 特有的,所有应用层协议都可以使用 SSL 进行安全通信。
- Http 直接跟 TCP 传输层交互,而 Https 多了一层 SSL 协议,正式这个协议让 Https 有了数据加密、身份认证的证书和数据完整性保护这些功能。SSL 是独立于 HTTP 的协议,所以不光是 HTTP 协议,其他运行在应用层的 SMTP 和 Telnet 等协议均可配合 SSL 协议使用。可以说 SSL 是当今世界上应用最为广泛的网络安全术。
socket和webSocekt的区别
- Socket 是传输层协议的具体软件实现,它封装了协议底层的复杂实现方法
- 传输层协议有TCP/UDP两种连接方式
- TCP三次握手四次挥手
- UDP是一种不可靠的传输机制,但是他的数据报文比TCP的小,传输速度更快,他不需要事先建立连接,知道对方地址后直接将数据包扔过去,不保证对方能不能收到。
- webSocket是一种升级版的Http服务传统的http服务都是客户端发起请求,服务端响应数据,但是webSocket支持服务器向客户端主动推送消息