使用后退按钮的反应原生Android应用程序

时间:2016-09-22 09:35:46

标签: android react-native back-button

我已经按照示例模式处理了react-native docs中的android后退按钮,并且效果很好。我可以使用硬件后退按钮弹出我的导航堆栈。

虽然堆栈中只有1个视图,但我没有弹出它(就像示例一样),我从hardwareBackPress事件监听器返回 false 。此时我看到在我的最终视图中调用了componentWillUnmount方法,此时我的应用程序关闭了。

如果我返回 true ,那么显然没有任何事情发生。

我想要发生的是,应用程序只是“背景化”而不是完全退出。

2 个答案:

答案 0 :(得分:4)

回答了我自己的问题。诀窍是覆盖MainActiviy

中的默认后退按钮行为
public class MainActivity extends ReactActivity {

    @Override
    protected String getMainComponentName() {
        return "foo";
    }

    @Override
    public void invokeDefaultOnBackPressed() {
        // do not call super. invokeDefaultOnBackPressed() as it will close the app.  Instead lets just put it in the background.
        moveTaskToBack(true);
    }
}

答案 1 :(得分:4)

尽管我给出答案的时间可能很晚,但可能会帮助其他面临问题的人。

最近,我遇到了相同的要求,必须将应用程序移至后台。我尝试了@pomo提供的解决方案。虽然有效,但我还是遇到了问题。有时,多次单击“后退”按钮时,该应用程序在android中表现不佳,尽管在iOS中运行良好。

然后我在GitHub上遇到了以下问题,其中提到了行为不当的原因。

以下解决方案现在可以正常工作。

// android/app/.../MainActivity.java
@Override
public void invokeDefaultOnBackPressed() {
    moveTaskToBack(true);
}
<!-- AndroidManifest.xml -->
<activity
    ...
    android:launchMode="singleTop">

Link from where I get the solution

我希望我能为要求相同的人提供帮助。