收藏
回答

GameRecorder游戏回放录制中,进行前后台切换后,一段时间就会提示运行内存不足,请重启小程序

框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
小游戏 Bug GameRecorder 微信iOS客户端 7.0.14 2.11.1

IphoneSE iphone7 plus必现,在回放录制过程中,退出到后台,再进入前台。过一段事件后,微信就会提示,“运行内存不足,请重启小程序”

备注:安卓虽然没有出现内存不足的问题,但是一旦进行前后台切换,之后再stop,onStop回调永远不会再出现。所以安卓也有bug

我的代码如下:

class GameRecordMgr {
    constructor() {
        if (cc.sys.platform === cc.sys.WECHAT_GAME) {
            var recorder = wx.getGameRecorder()
            recorder.on('error', (err) => {
                console.log("GameRecordMgr recorder err", err)
            })

            recorder.on('pause', (res) => {
                console.log("GameRecordMgr recorder pause", res)
            })

            recorder.on('start', (res) => {
                console.log("GameRecordMgr recorder start", res)
            })

            recorder.on('resume', (res) => {
                console.log("GameRecordMgr recorder resume", res)
            })

            recorder.on('abort', (res) => {
                console.log("GameRecordMgr recorder abort", res)
            })

            recorder.on('error', (res) => {
                console.log("GameRecordMgr recorder error", res)
            })

            recorder.on('stop', (res) => {
                console.log("GameRecordMgr recorder stop", res)
                this.m_stopCallBack && this.m_stopCallBack(res.duration)
            })
        }
    }

    startGameRecord() {
        var bitrate = 1000
        if (hf.dataMgr.gameRecordQuality === hf.constants.GAME_RECORD_QUALITY.MID) {
            bitrate = 2000
        }
        else if (hf.dataMgr.gameRecordQuality === hf.constants.GAME_RECORD_QUALITY.HIGH) {
            bitrate = 3000
        }

        var recorder = wx.getGameRecorder()
        recorder.start({
            fps: 24,
            bitrate: bitrate,
            hookBgm: false,
            duration: 60
        })
        console.log("xxxxxxxxxx startGameRecord")
    }

    stopGameRecord(cb) {
        var recorder = wx.getGameRecorder()
        recorder.stop()
        this.m_stopCallBack = cb
    }

    showShareButton(wxRect, bgm, duration, score) {
        var timeRange
        if (duration >= 60 * 1000) {
            timeRange = [[0, 60 * 1000]]
        }
        else {
            timeRange = [[0, duration]]
        }

        console.log("showShareButton", wxRect)
        if (!this.m_shareBtn) {
            var shareBtn = wx.createGameRecorderShareButton({
                image: "shareVideo.png",
                icon: "",
                text: "",
                style: {
                    left: wxRect.left,
                    top: wxRect.top,
                    height: wxRect.height,
                    backgroundColor: "#fff",
                    iconMarginRight: wxRect.width - 57
                },
                share: {
                    query: "type=record",
                    bgm: bgm,
                    timeRange: timeRange,
                    title: {
                        template: 'default.score',
                        data: {
                            score: score
                        }
                    },
                    button: {
                        template: 'default.challenge'
                    }
                }
            })

            shareBtn.onTap((info) => {
                console.log("xxxxx share Tap ", info)
            })

            this.m_shareBtn = shareBtn
        }
        else {
            this.m_shareBtn.share = {
                query: "type=record",
                bgm: bgm,
                timeRange: timeRange,
                title: {
                    template: 'default.score',
                    data: {
                        score: score
                    }
                },
                button: {
                    template: 'default.challenge'
                }
            }
        }

        this.m_shareBtn.show()
    }

    hideShareBtn() {
        if (this.m_shareBtn) {
            this.m_shareBtn.hide()
        }
    }
}

module.exports = GameRecordMgr
最后一次编辑于  2020-06-03
回答关注问题邀请回答
收藏

2 个回答

  • 小游戏运营专员 - 宏
    小游戏运营专员 - 宏
    2020-06-09

    后续会进行优化。

    2020-06-09
    有用
    回复
  • 🐂火星牛
    🐂火星牛
    2020-06-19

    我也发现,播放回放后,返回了,但是内存好像还是没有释放,导致游戏卡。

    2020-06-19
    有用
    回复
登录 后发表内容
问题标签