Roku Developer Program

Join our online forum to talk to Roku developers and fellow channel creators. Ask questions, share tips with the community, and find helpful resources.
Showing results for 
Show  only  | Search instead for 
Did you mean: 

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

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
Channel Surfer

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