Roku应用程序在第二次roMessagePort等待时无错误退出



这是我能得到的重现问题的最小片段。

Sub Main()
    u = getStringFromKeyboard("Enter username")
    p = getStringFromKeyboard("Enter password")
End Sub
Function getStringFromKeyboard(message = "" As String) As String
    result = ""
    port = CreateObject("roMessagePort")
    screen = CreateObject("roKeyboardScreen")
    screen.SetMessagePort(port)
    screen.SetDisplayText(message)
    screen.AddButton(1, "OK")
    screen.Show()
    while true
        print "waiting..."
        msg = wait(0, port)
        print "done waiting"
        if type(msg) = "roKeyboardScreenEvent" then
            if msg.GetIndex() = 1 then
                result = screen.GetText()
                exit while
            end if
        end if
    end while
    screen.Close()
    return result
End Function

Roku将正确提示输入用户名,但在提示输入密码之前只会退出主菜单。调试输出指示应用程序在第二次调用wait()时中止:

waiting...
done waiting
waiting...

这是SDK v4.1和操作系统v4.2.1006。

有人知道发生了什么事吗?

Roku开发者论坛上用户gonzotek的回答:

创建立面屏幕。roku在最后一个屏幕关闭。您创建了第一个键盘屏幕在getStringFromKeyboard函数中关闭它,因为没有其他屏幕在那一刻打开,这就是Roku杀死应用程序的时候。请参阅RokuKevin的解释:viewtopic.php?p=162550#p162550(注:他指的是"屏幕闪烁",当他写的,但现在要求总是有一个屏幕在应用程序的生命周期中一直打开堆栈的后部:viewtopic.php?p=321402#p321402)。

最新更新