25消息处理

前台服务8.0以上系统
1.配置权限

<!--配置前提服务权限-->
<uses-permission android:name="android. permission. FOREGROUND_ SERVICE "></us es-permission>

2.创建消息通知

//1.构建消息管理器
Notificati onManager manager= (Notificati onManager)
getsystemService (NOTIFICATION_ SERVICE);
//2.构建消息通道
NotificationChanne7 channe1=new
Notifi cati onChanne1 (ID, NAME,NotificationManager . IMPORTANCE_ HIGH) ;
//3.创建消息通道
manager . createNotificati onChanne1(channe1);
//4.构建消息
Notification notificati on=new Notification. Builder (this ,ID)
.setContentTitle ("收到一条重要通知")
.setContentText ("这是重要通知")
.setSma11Icon (R. mipmap. ic. _launcher)
.bui1d ();
//5.发送前台服务消息
startForeground(1 ,notification);

HTTP (Hyper Text Transfer Protocol)
协议即超文本传输协议,它规定了浏览器和万维网服务器之间互相通信的规则。

●一次HTTP请求的过程

●建立连接→发送请求→处理请求→返回数据→发送请求2→关闭连接

●HTTP请求的常用方式

●GET
●POST

●HTTP请求的格式

●请求行
●请求头
●请求体

●HTTP响应的格式

●响应行(包含响应码: 200 404 500 302) .
●响应头.
●响应体

GET方式和POST方式提交数据
●HTTP/1.1协议中共定义了八种方法来表明Request URI指定的资源的不同操作方式。其中最常用的两种请求方式是GET和POST。
●GET方式与POST方式的区别
GET方式以实体的方式得到由请求URL所指向的资源信息,向服务器提交的参数跟在请求URL后面。使用GET方式访问网络URL的长度是有限制的,请求URL的长度要小于1K。
●POST方式用来向目 的服务器发出请求,要求它接收被附在请求后的实体。它向服务器提交的参数在请求后的实体中,POST方 式对URL的长度是没有限制的。

使用HttpConnection

  1. URI. :包含请求地址的类
    ●URL(path) :包含请求路径的构造方法
    ●openConnection() :得到连接对象
  2. HttpURLConnection :代表与服务器连接的类
    setRequestMethod(“GET/POST" ) :设置请求方式
    ●setDoInput (true/false) :设置可以读取服务器端返回的数据
    ●setDoOutput (true/false) :设置可以向服务器端写入数据
    ●setConnectTimeout(time) :设置连接超时时间,单位为ms
    ●setReadTimeout(time): 设置读取服务器返回数据的时间
    ●connect( :连接服务器
    ●int getResponseCode(: 得到服务器返回的结果码
    ●Int getContentLength() :得到服务器返回数据的长度(字节)
    ●getOutputStream() :返回一个指向服务器端的数据输出流
    ●getInputStream() :返回一个从服务器端返回的数据输入流
    ●disconnect() :断开连接

网络请求要使用子线程

<?xm1 version="1.0" encoding="utf-8"?>
<network-security-config>
<domain-config>
<domain includesubdomains="true">https://www. baidu . com/</ domain>
<pin-set expiration="2020-08-01">
<pin digest="SHA-256">7HIpactkIAq2Y49orFooQKurWxmmSFZhBCOQYCRhJ3Y=</pin>
<!-- backup pin -->
<pin digest="SHA-256">fwzaOL RMXouZHRC8Ei+4P yu1dPDcf 3UKg0/04cDM1oE=</pin>
</pin-set>
</ domain-confi g>
</network-security-config>
<uses -permission android:name="android. permission. ACCESS_ _WIFI STATE"/>
<uses-permission androi d:name="android. permiss ion . INTERNET'"/>
<uses -permission android:name=" android. permission.ACCESS NETWORK STATE"/>
androi d:usesCleartextTraffic="true"
android:networksecurityConfig="@xm1/network_ security_ config"
new Thread(new Runnable() {
goverride
public void run( {
try{
//1.构建请求地址
URL url=new URL ("https ://www.baidu.com/");
//2.获取HttpUriConnection对象
HttpURlConnection connection= (HttpURLConnection) ur1. openConnection();
//3.设置请求信息

/** json数据传递
* connection.setReques tMethod("GET");
* connection.setDooutput(true) ;
* connection.setDoInput(true);
* connection.setuseCaches (false);
* string data= (unmae=admin) + (passs=123);要求数据格式
* OutputStream out=connection . getoutputstream() ;
* out . write(data);
*/
connection . setConnectTimeout (50000);
//connection.setRequestProperty("charset" , "utf-8");
//连接
connection. connect(;
//4.获取响应
if (connection. getResponseCode ()==200){
//5.处理响应内容
Inputstream in=connection . getInputstream() ;
InputstreamReader isr=new InputstreamReader(in, "utf-8");
Buf feredReader reader=new BufferedReader(isr);
String line;
while(Cline=reader . readL ine()) !=null){
System. out. println(line);
}
reader.closeO ;
isr .close(;
in.close();
}
}catch (Exception e){
e.printStackTrace() ;
}
}
}).start() ;

Handler消息机制
●在使用手机下载软件时,通常都能在界面上看到一个下载的进度条,这个进度条用来表示当前下载的进度。但是Android4.0以后不能在UI线程访问网络,而子线程也不能更新UI界面。为了根据下载进度实时更新UI界面,就需要用到Handler消息机制来实现线程间的通信。
●Handler机制主 要包括四个关键对象,分别是: Message、 Handler、MessageQueue、 Looper 。

●MessageQueue.
●MessageQueue是消息队列的意思,它主要用来存放通过Handler发送的消息。通过Handler发 送的消息会存在MessageQueue中等待处理。它是一个按Message的when排序的优先级队列。(when:代表 着被处理的时间)
●Looper
●Looper是每个线程中的MessageQueue的管家。 调用Looper的loop()方法后,就会进入到一个无线循环中。然后-发现MessageQueue中存在一条消息,就会将它取出,并传递到Handler的HandlerMessage()方法中。
●Handler
●Handler主要用于发送消息和处理消息。-般使用Handelr对象的sendMessage()方法发送消息,消息经过一系列处理后,最终会传递到Handler的handlerMessage()方法中。
●发送即时消息: sendMessage(Message msg)
●发送延时消息: sendMessageDelayed(Message msg, long time)
●处理消息: handleMessage(Message msg) (回调方法)
●移除还未处理的消息: removeMessages(int what)

●使用Handler的一般步骤
1.创建Handler成员变量对象,并重写其handleMessage()
2.在分/主线程创建Message对象
3.使用handler对象发送Message
4.在handleMessage()中处理消息

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值