pom*_*omo 2 android back-button react-native
我已经按照示例模式处理react-native 文档中的android后退按钮,并且效果很好。我可以使用硬件后退按钮弹出导航堆栈。
在这一点上,尽管我没有弹出它,但堆栈中只有1个视图(就像示例一样),并且我从事件监听器返回falsehardwareBackPress。至此,我看到componentWillUnmount最终视图中正在调用该方法,此时我的应用程序关闭了。
如果我返回true,那么显然什么也没有发生。
我想发生的事情是该应用程序仅被“后台化”,而不是完全退出。
回答了我自己的问题。诀窍是要覆盖默认的后退按钮行为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)
尽管我给出答案的时间可能很晚,但它可能会帮助其他面临问题的人。
最近我遇到了同样的要求,我必须将应用程序移到后台。我尝试了@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)
希望能帮到有同样需求的小伙伴。