javascript - Samsung Smart TV App 退出再启动后速度很慢

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

我们为 2011 和 2012 平台开发了三星智能电视应用。该应用程序基于 HTML/JavaScript。通常应用程序运行良好,但退出应用程序后变得非常慢,速度是原来的六倍。测得的 JS 执行时间只是稍微慢一点,但 HTML 元素在屏幕上的渲染速度要慢得多。这种行为发生在所有设备上(电视和带有智能电视平台的蓝光播放器设备)。

通过执行JS命令实现退出

var widgetAPI = new Common.API.Widget();
widgetAPI.sendExitEvent();

当使用命令时,应用程序的行为相同(即再次启动后变慢)

widgetAPI.sendReturnEvent();

(将用户返回到 Smart Hub 而不是完全退出)。通过反复试验,我发现故意让应用程序崩溃可以解决问题 - 这会导致与调用 sendExitEvent 方法的用户行为相同。然而,这不是一个非常干净的方法,而且我更愿意使用 sendReturnEvent 命令。

如何以编程方式将用户返回到 Smart Hub,以便应用程序在再次启动时不会变慢?

我希望有人对此有一些第一人称的经验和建议。我试图消除可能的 JS 内存泄漏源(使用 JS 编程最佳实践和三星的建议),但这并没有解决问题。

最佳答案

我用两个 Action 解决了这个问题:

  • 我没有简单地调用 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

引起

关于javascript - Samsung Smart TV App 退出再启动后速度很慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15367400/

相关文章:

java - Android Service 实例在 onDestroy() 和 GC 之后继续存在

javascript - javascript递归调用回调中的函数是否存在内存泄漏?

javascript - 使用javascript中的循环创建html代码块

javascript - 清除传单 map 中的所有多段线

mysql - 可以或不可以时限制 SQL?

MySQL "IN"操作符对(大?)个数的值的性能

java - Web 服务客户端中的 ThreadLocal 泄漏

javascript - Feathers JS 身份验证,无需电子邮件

javascript - 未捕获的类型错误 : Object #<Object> has no method 'Sin'

iphone - 测量 UITableView 滚动性能 - iphone