Roku Developer Program

Developers and content creators—a complete solution for growing an audience directly.
Showing results for 
Show  only  | Search instead for 
Did you mean: 
Level 7

What is the proper way to reuse tasks?

Right now I have a periodic task that runs every 25 seconds to maintain a session with our backend.

I am executing the following function every 25 seconds.  At some point, I seem to have multiple PlaybackSessionTask tasks running at the same time.  Is there a way to clean up the created tasks once they have completed?  Should I reuse one task and just call start?

function saveSession(titleId, seconds)
    m.playbackSessionTask = createObject("roSGNode", "PlaybackSessionTask")
    m.playbackSessionTask.observeField("response", "handleSaveSession")
    m.playbackSessionTask.functionName = "save"
    m.playbackSessionTask.contentId = titleId
    m.playbackSessionTask.seconds = seconds
    m.playbackSessionTask.control = "RUN"
end function
0 Kudos
Level 7

Re: What is the proper way to reuse tasks?

You can reuse m.playbackSessionTask task. Just don't create new for m.playbackSessionTask
use the following to be sure previously used task was closed:
m.playbackSessionTask.control = "DONE"

It will finished task thread.
0 Kudos
Level 8

Re: What is the proper way to reuse tasks?

is DONE new in 7.6+? I though the only valid control setter values were INIT, RUN, or STOP
edit: Never mind, it's been there all along.
Another question about tasks... why is the control value required to be UPPERCASE when set, but is lowercase when get??
0 Kudos