无长时任务的应用退到后台主动断开socket连接,包含TCP和UDP连接。
约束
应用如果不主动断开socket连接,系统会强制断开TCP连接,应用在前台后需要主动重新创建连接。
示例
HTTP数据请求
import { UIAbility } from '@kit.AbilityKit';
import { http } from '@kit.NetworkKit';
export default class EntryAbility extends UIAbility {
// ...
onForeground(): void {
//在前台时按业务所需创建http请求
let httpRequest = http.createHttp();
// ...
}
onBackground(): void {
//退到后台释放http请求
httpRequest.destroy();
}
}
Socket连接
import { UIAbility } from '@kit.AbilityKit';
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
export default class EntryAbility extends UIAbility {
// ...
tcp: socket.TCPSocket = socket.constructTCPSocketInstance();
onForeground(): void {
//在前台时按业务所需创建socket连接并发送业务数据
this.tcp.bind(ipAddress, (err: BusinessError) => {})
this.tcp.connect(tcpConnect, (err: BusinessError) => {})
this.tcp.send(tcpSendOptions, (err: BusinessError) => {})
}
onBackground(): void {
//退到后台关闭socket连接
this.tcp.close((err: BusinessError) => {})
}
}
WebSocket连接
import { UIAbility } from '@kit.AbilityKit';
import { webSocket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
export default class EntryAbility extends UIAbility {
//按业务所需创建websocket
ws = webSocket.createWebSocket();
onForeground(): void {
//在前台时通过websocket发送数据
this.ws.on('open', (err: BusinessError, value: Object) => {
console.log("onopen,status:" + JSON.stringify(value));
//当收到on('open')事件时,可以通过send()方法与服务器进行通信
this.ws.send("Hello,server!", (err: BusinessError, value: boolean) => {
if (!err) {
console.log("Messagesentsuccessfully");
} else {
console.log("Failedtosendthemessage.Err:" + JSON.stringify(err));
}
});
});
}
onBackground(): void {
//退后台关闭websocket
this.ws.close((err: BusinessError) => {});
}
}ound(): void { //退后台关闭websocket this.ws.close((err: BusinessError) => {}); }}