收藏
回答

为什么微信APP长时间运行后小游戏中的多线程worker可能会不运行?

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', {
            useExperimentalWorkertrue
        })
        let thatwn = this;
        worker.onMessage(function (res{
            ……
        })
        // 监听worker被系统回收事件
        worker.onProcessKilled(() => {
            try {
                worker.terminate();
            } catch {}
            GameGlobal.IsNewShow = true;//这句代码会触发createNewWorker()
        })
    }
AutoXingQi() {
        ……
        PostMessageStr = JSON.stringify({
            isPaoturnHthis.isPaoturn,
            GameModeH: GameGlobal.GameMode,
            RenJiNanDuH: GameGlobal.RenJiNanDu,
            LatestXingQiH: LatestXingQi,
            QiZisPaoHthis.QiZisPao,
            QiZisBingHthis.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
    })
})

回答关注问题邀请回答
收藏

2 个回答

  • 小游戏运营专员 - 宏
    小游戏运营专员 - 宏
    2022-01-07

    我们私信看看

    2022-01-07
    有用
    回复 2
    • 智慧选手
      智慧选手
      2022-01-07
      好的,感谢!
      2022-01-07
      回复
    • 智慧选手
      智慧选手
      2022-01-25
      在最新的iphone13上也存在该问题。
      2022-01-25
      回复
  • 智慧选手
    智慧选手
    2022-01-12

    在最新的iphone13上也存在该问题。

    2022-01-12
    有用
    回复
登录 后发表内容