无需调用componentWillUnmount即可重新创建组件

时间:2019-01-09 06:02:08

标签: react-native

我正在开发一个本机应用程序。我目前正在android中进行测试,看来当应用失去焦点,然后再次按下启动图标时,无需调用componentWillUnmount即可重新创建组件。

我可以用一个简单的react-native应用程序重新创建它:

react-native init MultipleComponents

并将以下内容添加到App类:

componentDidMount() {
    clearInterval(this._interval);
    this._interval = setInterval(() => {
        console.log("Timeout");
    }, 5000);
}

componentWillUnmount() {
    console.log("Timeout");
    clearInterval(this._interval);
}

完成此操作后,即可使用:

react-native run-android

然后,在模拟器上,您可以通过按下主屏幕按钮并重新启动应用程序来运行多个计时器。运行多个计时器显然不理想。

请注意,未调用componentWillUnmount。

我想念什么吗?该如何处理?

1 个答案:

答案 0 :(得分:1)

当应用程序不在前台时,JavaScript线程就消失了,因此在您的应用程序失去焦点之后就不会执行任何React代码,这包括componentWillUnmount和其他生命周期方法。

但是,如果最终在按下图标时遇到多个计时器,则应该检查AndroidManifest.xml文件中的launchMode。如果launchMode的值为 standard singleTop ,则您的应用可以存在多个实例。如果将设置更改为 singleInstance singleTask ,则将始终只有一个实例。

android / app / src / AndroidManifest.xml:

<manifest>
  <application>
    <activity
      android:launchMode="singleTask">
  </application>
</manifest>