6

我正在启动 WebOS 开发,但我对应该在哪里开始和停止我的听众有疑问?我正在阅读本书,但我找不到明确的解释。在示例中,作者在 setup 函数中设置了侦听器,但我想知道为什么?将它们设置为激活功能并按照模板注释的建议将它们停止在停用功能中不是更好的主意吗?

如果我错了,应该和不应该在设置和激活功能中放置什么样的事件?

何时调用设置、激活、停用、清理功能?

StoryViewAssistant.prototype.setup = function() {
    //HERE, OK?
    this.nextStoryHandler = this.nextStory.bindAsEventListener(this); 
    this.previousStoryHandler = this.previousStory.bindAsEventListener(this); 
    this.controller.listen("nextStory", Mojo.Event.tap, this.nextStoryHandler); 
    this.controller.listen("previousStory", Mojo.Event.tap,this.previousStoryHandler);
    /* add event handlers to listen to events from widgets */

};

StoryViewAssistant.prototype.activate = function(event) {
    //HERE? 
    /* put in event handlers here that should only be in effect when this scene is active. For example, key handlers that are observing the document */
};

StoryViewAssistant.prototype.deactivate = function(event) {
    //HERE? 
    /* remove any event handlers you added in activate and do any other cleanup that should happen before this scene is popped or another scene is pushed on top */
};

StoryViewAssistant.prototype.cleanup = function(event) {
    //HERE, OK?
    this.controller.stopListening("nextStore", Mojo.Event.tap, this.nextStoryHandler);
};
4

1 回答 1

5

创建场景时调用场景助手的设置,从堆栈中弹出时调用清理。setup中,控件的实际 HTML 内容不可用,因为尚未处理场景的模板。如果在模板处理完成后可用,则调用ready方法,这是进行任何其他 HTML DOM 更改的好地方。 在场景变为活动之前调用activate ,而在弹出场景或将另一个场景推到该场景之上时调用 deativate 。激活/*停用* 当应用程序最小化为卡片或返回全屏时也会调用。

通常最好在激活/停用时启动和停止事件侦听器——这样可以将它们的活动时间保持在最低限度,并且活动侦听器越少,系统响应速度就越快。

于 2010-10-27T18:14:45.143 回答