글타래: Widget 개발자들이 염두해 두어야 할 기본 지침들
Dashboard가 화면 상에서 감추어져 있을 경우, 모든 widget들은 불필요한 CPU 소비량이 없어야 합니다. 이것을 구현하기 위해서, O'Reilly Network에 소개된 The Widget Maker's Prime Directive라는 제목의 글에서는 크게 두 가지를 제시하고 있습니다.
우선, onshow와 onhide에 지정되어 있게 될 함수들을 잘 활용해야 합니다.
if (window.widget){
widget.onhide = onhide;
widget.onshow = onshow;
}
function onhide() {
//stop processing...
}
function onshow() {
//restart processing...
}
위에서처럼, onshow와 onhide에는 Dashboard가 보여지고 숨겨질 때마다, 실행되는 일종의 정리하는 코드들이 들어가는데, 이 곳에서 살펴야할 불필요한 주요 CPU 소비 형태들로는, 움직이는 .gif 파일들의 사용과 불필요한 Interval들의 사용이 있습니다.
움직이는 .gif 파일들의 경우에는, onhide 안에 다음과 같은 코드를 심어서 Dashboard가 감추어질 경우 불필요한 CPU 소모를 없앨 수 있습니다.
document.getElementById("myGifId").style.display = "none";
그리고, Dashboard가 열려서 다시 .gif 파일을 표시하려면 onshow에 다음과 같이 처리해 주면 됩니다.
document.getElementById("myGifId").style.display = "inline";
또 하나 setInterval()과 clearInterval()을 써서 어떤 지속적으로 반복해서 실행되는 동작을 구현했을 경우에는, 아래의 예에서와 같이 setInterval()을 부를 때 전역 변수에 넣어서 나중에 Dashboard가 감추어질 때 clearInterval()로 정지시킵니다.
var timer = null;
var active = false;
function someEvent(event){
timer = setInterval("doSomethingOverAndOver()", 100);
active = true;
}
function onhide(){
if(null != timer){
clearInterval(timer);
timer = null;
}
}
function onshow(){
if(true == active){
timer = setInterval("doSomethingOverAndOver()", 100);
}
}
이러한 사항만 잘 지키면, 대부분의 불필요한 CPU의 부담을 덜어줄 수 있답니다.