퓨즈[Fusetools] 문서[Docs] 번역

  1. Home
  2. 퓨즈[Fusetools] 문서[Docs] 번역
  3. 자바스크립트 APIs
  4. 라이프사이클[Lifecycle]

라이프사이클[Lifecycle]

Lifecycle 모듈 (JS)

JS에서 앱 라이프 사이클 모니터링.

앱의 라이프 사이클은 앱이 시작된 후 종료될 때까지의 시간입니다. 이 시간 동안 앱은 여러 상태를 통과합니다.

라이프 사이클 모듈을 사용하면 현재 상태를 쿼리할 수 있으며 앱이 상태를 변경하면 알림을 받을 수 있습니다.

상태

  • Starting
  • Background
  • Foreground
  • Interactive

Starting

자바스크립트가 처음 평가되는 시점이므로, 앱의 시작 이벤트는 암시적입니다.

Background

앱이 사용자와 상호 작용할 수 있는 상태가 아닙니다. 즉, 운영 시스템이 ‘sleep’ 상태로 전환되었습니다.

앱이 이 상태에 있는 동안 코드가 실행되지 않으므로, 퓨즈가 무언가를 실행하지 않을까 걱정할 필요가 없습니다.

Foreground

앱이 사용자 디바이스의 전면 중앙에 위치하지만 아직 앱과 상호 작용할 수 없습니다. 이 상태가 되는 가장 큰 이유는 사용자가 iOS 또는 Android에서 알림 표시줄(notification bar)을 열었기 때문입니다.

Interactive

이제 앱이 foreground에 있으며 사용자의 입력이 가능합니다.

상태 변경

앱이 무작위로 상태를 변경한다면 앱 수명주기를 사용하는 것이 어려울 것입니다. 따라서, 다음과 같이 상태가 항상 진행되도록 보장하고 있습니다.

Starting ↓ Background ⟷ Foreground ⟷ Interactive ↓ Terminating

종료(terminating) 이벤트가 없음

왜 ‘terminating’ 이벤트가 없는지 궁금할 것입니다. 그 이유는 모바일 플랫폼에서 OS가 앱을 종료할 때 당신에게 알려줄 것을 약속하지 않는다는 것입니다. 어떤 경우에는(메모리 부족, 긴급 통화 등) 그렇지 않을 수도 있습니다.

이로 인해 모바일 플랫폼 용 가이드는 ‘terminating’ 이벤트를 앱이 종료된다는 신호로 사용하지 말 것을 권장합니다. 대신 정기적으로 앱의 ‘checkpointing’을 지정하여 모든 종류의 종료를 복구할 수 있습니다.

우리는 그것을 사용할 의도가 없다고 판단하여, 그 이벤트를 발생하지 않기로 결정했습니다.

이 모듈은 EventEmitter이므로 EventEmitter의 메서드를 사용하여 이벤트를 수신할 수 있습니다.

예제

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<JavaScript>
    var Lifecycle = require('FuseJS/Lifecycle');

    Lifecycle.on("enteringForeground", function() {
        console.log("on enteringForeground");
    });
    Lifecycle.on("enteringInteractive", function() {
        console.log("on enteringInteractive");
    });
    Lifecycle.on("exitedInteractive", function() {
        console.log("on exitedInteractive");
    });
    Lifecycle.on("enteringBackground", function() {
        console.log("on enteringBackground");
    });
    Lifecycle.on("stateChanged", function(newState) {
        console.log("on stateChanged " + newState);
    });
    module.exports = { lifecycleState: Lifecycle.observe("stateChanged") }
</JavaScript>
<StackPanel>
    <Text TextWrapping="Wrap">Open the Fuse Monitor to see the logs</Text>
    <Text>Current lifecycle state:</Text>
    <Text Value="{lifecycleState}" />
</StackPanel>

Lifecycle의 인터페이스

링크로 대신합니다: https://www.fusetools.com/docs/fusejs/lifecycle#section-table-of-contents

Was this article helpful to you? Yes No

How can we help?