我们已经为2011和2012年的平台开发了三星智能电视应用程序。该应用程序基于HTML/JavaScript。通常情况下,应用程序表现良好,但退出应用程序后会变得非常慢,速度是原来的6倍。测量的JS执行时间只是稍微慢一点,但是HTML元素呈现到屏幕上的速度要慢得多。这种行为发生在所有设备上(带有智能电视平台的电视和蓝光播放器设备)。
出口是通过执行JS命令实现的。
var widgetAPI = new Common.API.Widget();
widgetAPI.sendExitEvent();当使用命令时,应用程序的行为相同(即重新启动后会变慢)。
widgetAPI.sendReturnEvent();(将用户返回到智能集线器,而不是完全退出)。通过反复试验,我发现,故意让应用程序崩溃解决了这个问题--这导致了用户与调用sendExitEvent方法相同的行为。但是,这不是一个非常干净的方法,而且我更喜欢使用sendReturnEvent命令。
如何以编程方式将用户返回智能集线器,使应用程序在再次启动时不会变慢?
我希望有人在这方面有一些第一人称的经验和建议。我试图消除可能的JS内存泄漏源(使用JS编程最佳实践和三星的建议),但这并没有解决问题。
发布于 2013-03-13 09:33:26
我用两个动作解决了这个问题:
widgetAPI.sendReturnEvent(),而是将用户重定向到一个新的页面exit.html (使用window.location.href),这个页面几乎是空的,除了一个onload处理程序,它调用以下命令(这些命令相当于widgetApi.sendReadyEvent()和widgetApi.sendReturnEvent(),但不需要包含Widget.js文件) curWidget.setPreference("ready","true");
curWidget.setPreference("return","true");alert命令。显然,调用alert几次时会泄漏内存,这样在退出应用程序时就不会从内存中收集累积的垃圾,从而导致重新启动后速度变慢。只有采用这两种方法才能解决这一问题。据推测,应用程序会累积内存泄漏,从而导致应用程序在重新启动后变得缓慢。
1)文档级别上的(尽管我们努力遵循所有防止它们的准则),然后在加载另一个HTML之后清除它们。
2)全局级别的,由调用alert引起
https://stackoverflow.com/questions/15367400
复制相似问题