三星智能电视应用程序退出并重新启动后非常慢

时间:2013-03-12 16:56:52

标签: javascript performance memory-leaks samsung-smart-tv

我们为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编程最佳实践和三星的建议),但这并没有解决问题。

1 个答案:

答案 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)