【问题标题】:Samsung Smart TV App is very slow after exiting and starting again三星智能电视应用程序退出并重新启动后很慢
【发布时间】:2013-03-12 16:56:51
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

    我用两个动作解决了这个问题:

    • 我不是简单地调用widgetAPI.sendReturnEvent(),而是将用户重定向到一个新页面exit.html(使用window.location.href),该页面几乎是空的,除了调用以下命令的onload处理程序(相当于@ 987654323@ 和 widgetApi.sendReturnEvent() 但不需要包含 Widget.js 文件)
       curWidget.setPreference("ready","true");
       curWidget.setPreference("return","true");
    
    • 注释掉所有alert 命令。显然调用alert多次使用会导致内存泄漏,导致退出应用时不会从内存中回收累积的垃圾,导致重启后变慢

    仅应用这两种方法似乎可以解决问题。大概是应用程序累积内存泄漏导致应用程序重启后速度变慢

    1) 在文档级别(尽管我们努力遵循所有准则来防止它们发生),然后在加载另一个 HTML 文件后将其清除。

    2)在全球范围内,由调用alert引起的

    【讨论】:

    • 嘿,你能不能把这个退出页面的示例代码发给我,我的意思是你在那个退出应用程序上的实际代码,我的应用程序由于这个问题被卡住了
    猜你喜欢
    • 2015-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多