我们为2011年开发了一款三星智能电视应用程序。 2012平台。该应用程序基于HTML / JavaScript。通常应用程序运行良好,但退出应用程序后变得非常慢,为6。测量的JS执行时间仅略慢,但HTML元素的渲染速度要慢得多。所有设备(带有智能电视平台的电视和蓝光播放器设备)都会出现此问题。
退出是通过执行JS命令
实现的var widgetAPI = new Common.API.Widget();
widgetAPI.sendExitEvent();
使用命令
时,应用程序的行为相同(即在重新启动后变慢)widgetAPI.sendReturnEvent();
(将用户返回到Smart Hub而不是完全退出)。通过反复试验,我发现有意使应用程序崩溃可以解决问题 - 这会导致用户调用sendExitEvent
方法时的行为相同。但是,它不是一个非常干净的方法,而且我更愿意使用sendReturnEvent
命令。
如何以编程方式将用户返回到Smart Hub,以便应用程序在重新启动时不会变慢?
我希望有人能有一些第一人称的经验和建议。我试图消除可能的JS内存泄漏源(使用JS编程最佳实践和三星的建议),但这并没有解决问题。
答案 0 :(得分:1)
我使用两个动作解决了问题:
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文件后清除它们。
通过调用alert
导致全局级别的2)