1.问题描述:微信APP刚打开和在一定的运行时间内,小游戏中的多线程worker运行正常。微信APP长时间运行后,小游戏中的多线程worker可能会不运行,而且重启小程序也无效,必须重启微信后worker又才正常工作。
2.相关机型及版本:iphone6S,iOS15.2,微信Version8.0.16。
3.小游戏多线程worker情况:棋牌游戏,人机对战时机器的行棋算法在多线程worker中进行。
4.小游戏的小程序码:
5.小游戏主线程中worker相关代码如下:
wx.onHide(function () {
try {
worker.terminate();
} catch {}
})
wx.onShow(function () {
GameGlobal.IsNewShow = true;//这句代码会触发createNewWorker()
})
createNewWorker() {
try {
worker.terminate();
} catch {}
worker = wx.createWorker('workers/request/index.js', {
useExperimentalWorker: true
})
let thatwn = this;
worker.onMessage(function (res) {
……
})
// 监听worker被系统回收事件
worker.onProcessKilled(() => {
try {
worker.terminate();
} catch {}
GameGlobal.IsNewShow = true;//这句代码会触发createNewWorker()
})
}
AutoXingQi() {
……
PostMessageStr = JSON.stringify({
isPaoturnH: this.isPaoturn,
GameModeH: GameGlobal.GameMode,
RenJiNanDuH: GameGlobal.RenJiNanDu,
LatestXingQiH: LatestXingQi,
QiZisPaoH: this.QiZisPao,
QiZisBingH: this.QiZisBing
});
worker.postMessage({
messageStr: PostMessageStr
})
}
6.request文件夹中index.js子线程核心代码:
worker.onMessage(function (res) {
resJSON = JSON.parse(res.messageStr);
if (resJSON.isPaoturnH)
PaoAutoXingQi();
else
BingAutoXingQi();
worker.postMessage({
AutoXQIW: AutoXQI,
AutoXQJW: AutoXQJ
})
})
我们私信看看
在最新的iphone13上也存在该问题。