1e41f4b71Sopenharmony_ci# app.js
2e41f4b71Sopenharmony_ci
3e41f4b71Sopenharmony_ci## 应用生命周期<sup>4+</sup>
4e41f4b71Sopenharmony_ci
5e41f4b71Sopenharmony_ci每个应用可以在app.js自定义应用级生命周期的实现逻辑,包括:
6e41f4b71Sopenharmony_ci
7e41f4b71Sopenharmony_ci
8e41f4b71Sopenharmony_ci- onCreate:在应用生成时被调用的生命周期函数。
9e41f4b71Sopenharmony_ci
10e41f4b71Sopenharmony_ci- onDestroy:在应用销毁时被调用的生命周期函数。
11e41f4b71Sopenharmony_ci
12e41f4b71Sopenharmony_ci
13e41f4b71Sopenharmony_ci以下示例仅在生命周期函数中打印对应日志:
14e41f4b71Sopenharmony_ci
15e41f4b71Sopenharmony_ci
16e41f4b71Sopenharmony_ci
17e41f4b71Sopenharmony_ci```js
18e41f4b71Sopenharmony_ci// app.js
19e41f4b71Sopenharmony_ciexport default {
20e41f4b71Sopenharmony_ci  onCreate() {
21e41f4b71Sopenharmony_ci    console.info('Application onCreate');
22e41f4b71Sopenharmony_ci  },
23e41f4b71Sopenharmony_ci  onDestroy() {
24e41f4b71Sopenharmony_ci    console.info('Application onDestroy');
25e41f4b71Sopenharmony_ci  },
26e41f4b71Sopenharmony_ci}
27e41f4b71Sopenharmony_ci```
28e41f4b71Sopenharmony_ci
29e41f4b71Sopenharmony_ci## 应用对象<sup>10+</sup>
30e41f4b71Sopenharmony_ci
31e41f4b71Sopenharmony_ci| 属性     | 类型       | 描述                                       |
32e41f4b71Sopenharmony_ci| ------ | -------- | ---------------------------------------- |
33e41f4b71Sopenharmony_ci| getApp | Function | 提供getApp()全局方法,可以在页面js文件中获取app.js中暴露的数据对象。 |
34e41f4b71Sopenharmony_ci
35e41f4b71Sopenharmony_ci> **说明**:
36e41f4b71Sopenharmony_ci>
37e41f4b71Sopenharmony_ci> 应用对象是全局数据,其在整个应用消亡之前都会一直占用JS内存。尽管应用对象可为不同页面共享数据提供便利,但因为小型设备本身内存比较小,也应谨慎使用。如果过度使用,则容易造成应用在进入复杂page页面时,内存不够而出现异常。
38e41f4b71Sopenharmony_ci
39e41f4b71Sopenharmony_ci示例如下:
40e41f4b71Sopenharmony_ci
41e41f4b71Sopenharmony_ciapp.js 中声明应用对象:
42e41f4b71Sopenharmony_ci
43e41f4b71Sopenharmony_ci```javascript
44e41f4b71Sopenharmony_ci// app.js
45e41f4b71Sopenharmony_ciexport default {
46e41f4b71Sopenharmony_ci    data: {
47e41f4b71Sopenharmony_ci        test: "by getAPP"
48e41f4b71Sopenharmony_ci    },
49e41f4b71Sopenharmony_ci    onCreate() {
50e41f4b71Sopenharmony_ci        console.info('Application onCreate');
51e41f4b71Sopenharmony_ci    },
52e41f4b71Sopenharmony_ci    onDestroy() {
53e41f4b71Sopenharmony_ci        console.info('Application onDestroy');
54e41f4b71Sopenharmony_ci    },
55e41f4b71Sopenharmony_ci};
56e41f4b71Sopenharmony_ci```
57e41f4b71Sopenharmony_ci
58e41f4b71Sopenharmony_ci在具体的页面中访问应用对象:
59e41f4b71Sopenharmony_ci
60e41f4b71Sopenharmony_ci```javascript
61e41f4b71Sopenharmony_ci// index.js
62e41f4b71Sopenharmony_ciexport default {
63e41f4b71Sopenharmony_ci    data: {
64e41f4b71Sopenharmony_ci        title: ""
65e41f4b71Sopenharmony_ci    },
66e41f4b71Sopenharmony_ci    onInit() {
67e41f4b71Sopenharmony_ci        if (typeof getApp !== 'undefined') {
68e41f4b71Sopenharmony_ci            var appData = getApp().data;
69e41f4b71Sopenharmony_ci            if (typeof appData !== 'undefined') {
70e41f4b71Sopenharmony_ci                this.title = appData.name; // read from app data
71e41f4b71Sopenharmony_ci            }
72e41f4b71Sopenharmony_ci        }
73e41f4b71Sopenharmony_ci    },
74e41f4b71Sopenharmony_ci    clickHandler() {
75e41f4b71Sopenharmony_ci        if (typeof getApp !== 'undefined') {
76e41f4b71Sopenharmony_ci            var appData = getApp().data;
77e41f4b71Sopenharmony_ci            if (typeof appData !== 'undefined') {
78e41f4b71Sopenharmony_ci                appData.name = this.title; // write to app data
79e41f4b71Sopenharmony_ci            }
80e41f4b71Sopenharmony_ci        }
81e41f4b71Sopenharmony_ci    }
82e41f4b71Sopenharmony_ci}
83e41f4b71Sopenharmony_ci```
84e41f4b71Sopenharmony_ci
85e41f4b71Sopenharmony_ci> **说明**:
86e41f4b71Sopenharmony_ci>
87e41f4b71Sopenharmony_ci> 为了应用可在不支持getApp的低版本上正常运行,代码中应进行兼容性处理,即在使用getApp前先判断其是否可用。