三星智能电视App退出后重新启动很慢

Samsung Smart TV App is very slow after exiting and starting again

本文关键字:重新启动 退出 智能 电视 App 三星      更新时间:2023-09-26

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

退出是通过执行JS命令

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

当使用命令

时,应用程序的行为相同(即在重新启动后变得更慢)
widgetAPI.sendReturnEvent();

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

我如何以编程方式将用户返回到智能集线器,以便应用程序在再次启动时不会变慢?

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

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

  • 而不是简单地调用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

引起