我已经按照示例模式处理了react-native docs中的android后退按钮,并且效果很好。我可以使用硬件后退按钮弹出我的导航堆栈。
虽然堆栈中只有1个视图,但我没有弹出它(就像示例一样),我从hardwareBackPress
事件监听器返回 false 。此时我看到在我的最终视图中调用了componentWillUnmount
方法,此时我的应用程序关闭了。
如果我返回 true ,那么显然没有任何事情发生。
我想要发生的是,应用程序只是“背景化”而不是完全退出。
答案 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
我希望我能为要求相同的人提供帮助。