react native 退出时保持后台运行(android)
来源:互联网 发布:公需科目大数据登录 编辑:程序博客网 时间:2024/06/08 03:14
在android app 的开发的开发过程中,我们需要监听android的返回键,退出active界面。
有时为了,能够给用户更好的体验,需要app退出界面后,app在后台运行。(当然这可能还需要实现 常驻内存,可以点击这里查看 常驻内存实现)
react native 提供backAndroid api,可以我们使用后发现。该api的退出,是结束进程,也就是完全退出。
于是查看该api,发现backAndroid api在ReactActivity里面的实现,最后默认会调用 invokeDefaultOnBackPressed 这个方法。
那我们想要实现在根路由里面,退出到后台运行,而不是关闭路由。该怎么解决呢?
这里我们只需在MainActivity里面重写invokeDefaultOnBackPressed方法就行。
为了方便大家copy,我贴出重写后的代码。我想对于react native android 着急的同学可以看看。
public void invokeDefaultOnBackPressed() { PackageManager pm = getPackageManager(); ResolveInfo homeInfo = pm.resolveActivity(new Intent(Intent.ACTION_MAIN).addCategory(Intent.CATEGORY_HOME), 0); ActivityInfo ai = homeInfo.activityInfo; Intent startIntent = new Intent(Intent.ACTION_MAIN); startIntent.addCategory(Intent.CATEGORY_LAUNCHER); startIntent.setComponent(new ComponentName(ai.packageName, ai.name)); startActivity(startIntent);}具体思路就是在退出前,将当期的Intent 保存。
或者这样重写invokeDefaultOnBackPressed方法,当然这样重写的话,只会在根路由退出才起作用
public void invokeDefaultOnBackPressed() { moveTaskToBack(false);}
当然要实现根路由退出你得在根路由实现以下方法。 注意backandroid 返回false 会结束应用运行,所以最后返回true
removeBackAndroidListener=()=> { if (Platform.OS === 'android') { BackAndroid.removeEventListener('hardwareBackPress', () => { }); }};addBackAndroidListener=(navigator)=> { if (Platform.OS === 'android') { BackAndroid.addEventListener('hardwareBackPress',() => { return this._onBackAndroid(navigator); }); }};_onBackAndroid=(navigator)=> { if (!navigator) return false; const routers = navigator.getCurrentRoutes(); // 当前页面不为root页面时的处理 if (routers.length > 1) { const top = routers[routers.length - 1]; if (top.ignoreBack || top.component.ignoreBack) { // 路由或组件上决定这个界面忽略back键 return true; } const handleBack = top.handleBack || top.component.handleBack; if (handleBack) { // 路由或组件上决定这个界面自行处理back键 return handleBack(); } // 默认行为: 退出当前界面。 navigator.pop(); return true; } // 当前页面为root页面时的处理 if (this.lastBackPressed ) { //最后退出到后台运行。 BackAndroid.exitApp(); return true; } this.lastBackPressed = Date.now(); // ToastAndroid.show(I18n.t('text.doubleAgain'),ToastAndroid.SHORT); return true;};
0 0
- react native 退出时保持后台运行(android)
- React Native(七):Android双击Back键退出应用
- React Native Android 虚拟机运行
- DigitalClock---TextClock---AnalogClock---Chronometer---程序退出保持后台运行设置
- 怎么运行别人的React-Native项目(android端)
- React Native运行Hellow World(Windows+Android)
- React Native监听Android回退按键,程序化退出应用
- Android 程序真退出与假退出后台运行详解
- Android 程序真退出与假退出后台运行详解
- Android程序真退出与假退出后台运行详解
- Android程序真退出与假退出后台运行详解
- Android程序真退出与假退出后台运行详解
- React-Native:调用(Android)Native方法
- React Native工程离线运行(ios)
- 运行React-Native项目
- 运行react native
- app退出后台运行
- 【react-native】react-native Windows+Android 安装并运行起来第一个demo
- at91sam9260 Arm开发板与PC机 ubuntu系统NFS挂载
- eclipse中maven环境配置与使用
- IOS响应者链条
- AutoCompeletTextView 坑
- Matlab实现BP神经网络和RBF神经网络(一)
- react native 退出时保持后台运行(android)
- 损失函数(loss function)
- 针对GCD的理解
- webpack简单的配置
- 大型网站架构之系列——纵观历史演变
- spring的HibernateDaoSupport以及HibernateTemplate和jdbcTemplate详解
- CSS3属性选择器详解
- 装饰器模式在IO流当中的应用
- Integer vs int