使用后退按钮为本地本机android应用程序设置背景

pom*_*omo 2 android back-button react-native

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

在这一点上,尽管我没有弹出它,但堆栈中只有1个视图(就像示例一样),并且我从事件监听器返回falsehardwareBackPress。至此,我看到componentWillUnmount最终视图中正在调用该方法,此时我的应用程序关闭了。

如果我返回true,那么显然什么也没有发生。

我想发生的事情是该应用程序仅被“后台化”,而不是完全退出。

pom*_*omo 6

回答了我自己的问题。诀窍是要覆盖默认的后退按钮行为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);
    }
}
Run Code Online (Sandbox Code Playgroud)


Pra*_*rma 5

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

最近我遇到了同样的要求,我必须将应用程序移到后台。我尝试了@pomo 提供的解决方案。虽然它奏效了,但我遇到了问题。有时在多次单击后退按钮时,该应用程序在 android 中行为异常,尽管它在 iOS 中运行良好。

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

下面的解决方案现在工作得很好。

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

我从哪里获得解决方案的链接

希望能帮到有同样需求的小伙伴。