GogoCao
GogoCao
  • 发布:2015-10-18 19:24
  • 更新:2015-10-18 20:27
  • 阅读:6365

mui窗口的生命周期的使用困惑

分类:MUI
mui

今天在使用mui时,发现一些窗口的生命周期的使用困惑

第一个:

我在一个页面上,会播放音乐、视频等,然后点击页面退出之后,还是会保持着播放
感觉是mui缓存了这些webview的引用,没有destory。我需要做一些什么呢?达到真正关闭页面。或者我得在监听退出的动作,然后做一些资源暂停或者释放的动作?

mui.close()好像也无效

第二个:

我目前是通过 openWindow 打开页面。

方法:


jump: function(page, query, appendJson) {  

                if (isMobile.any) {//如果是移动设备  
    //                var pageUrl = page + (query === undefined ? "" : "?extra=" + encodeURIComponent(JSON.stringify(query)));  
                    var pageUrl  = page;  
                    mui.openWindow({  
                        url:pageUrl,  
                        id:pageUrl,  
                        extras:{extras: query},  
                        createNew:true,//是否重复创建同样id的webview,默认为false:不重复创建,直接显示  
                        waiting:{  
                            title:'正在加载...',//等待对话框上显示的提示内容  
                        }  
                    });  
                } else {  

                    var pageUrl = page + (query === undefined ? "" : "?" + $.param(query));  

                    if (appendJson && query) {//如果不 这么做,会有一些特殊符号导致解析问题  
                        pageUrl += "&extra=" + encodeURIComponent(JSON.stringify(query));  
                    }  

                    console.log("当前参数组成的url是: " + pageUrl);  
                    w.location.href=pageUrl;  
                }  
            },  
            jumpDirectly: function(page, query) {  

                if (isMobile.any) {//如果是移动设备  
                    var pageUrl = page + (query === undefined ? "" : "?" + query);  
                  console.log("直接传递key-value uRL: " + pageUrl)  
                    mui.openWindow({  
                        url:pageUrl,  
                        id:pageUrl,  
                        extras:{extras: query},  
                        createNew:true,//是否重复创建同样id的webview,默认为false:不重复创建,直接显示  
                        waiting:{  
                            title:'正在加载...',//等待对话框上显示的提示内容  
                        }  
                    });  
                } else {  
                    var pageUrl = page + (query === undefined ? "" : "?" + query);  
                    console.log("当前参数组成的url是: " + pageUrl);  
                    w.location.href=pageUrl;  
                }  
            }

流程如下:

index.html -> navigator.html ,使用的是参数 ?category=sample

然后在navigator.html?category=sample -> detail.html ,使用的是extra参数传递,因为参数太长。

然后在 detail.html点击返回时(没有做任何处理的,mui.back()),发现在 然后在navigator.html的 cateogry值消失了。意味着 只有 navigator.html 的 URL Query信息丢失了。

2015-10-18 19:24 负责人:无 分享
已邀请:
DCloud_UNI_CHB

DCloud_UNI_CHB

1、包含视频/音频的页面,是预加载的吗?
2、detail.html返回后,是如何获得url query的?若你打开navigator.html页面时,可以获得url query,则保存成当前页面变量即可,之后从detail.html返回后,变量依然可用;

GogoCao

GogoCao (作者)

  1. 视频的,不是。刚才我测试 了一下,是我退出时,让用户 mui.confirm 了一下,并且根据 confirm的返回结果集用 var result = mui.confirm()对接了。 估计这里是异步执行。导致页面退出了,但是还没有销毁的错觉。现在直接在 confirm里面执行,已经可以关闭声音了。

  2. detail.html 页面中,是直接解析 当前 location.url 得到的 url query 参数。按照你说的方法,我觉得应该是可以走通。因为好像页面没有销毁过(缓存了)。我试试

谢谢。

DCloud_UNI_CHB

DCloud_UNI_CHB

extras的参数是不能通过location.url获得的,需要使用plus.webview.currentWebview(). extras获得

该问题目前已经被锁定, 无法添加新回复