为了简化我的问题:我有一个电子商务应用,它使用地理围栏来检测何时准备订单:
BackgroundGeolocation.onGeofence(geofence => {
this.props.prepareOrder();
});
问题是,prepareOrder()向我的服务器发出HTTP请求。我注意到在我的应用被预先制定之前,它实际上并没有提出请求。
有解决方法吗?当他们进入地理围栏并且我需要提出请求时,我的应用程序很可能是背景的。
==
更复杂的版本在这里:https://github.com/redux-saga/redux-saga/issues/816。我使用的是redux-sagas,它似乎并没有被调用yield call
。但是,我不确定它是否是在后台发出HTTP请求的还原事件。
答案 0 :(得分:0)
此处相同...这不是一个redux-saga问题,这是ReactNative应用程序在后台运行的更普遍的问题:当应用程序长时间在后台运行时,JS线程似乎被冻结(尤其是在iOS屏幕上已关闭)
iOS和android之间的行为有所不同,并且还取决于操作系统版本。不过,我们正在构建一个需要在前台和后台进行持续地理位置定位的应用程序,我们尝试使用sagas进行操作,但发现它不起作用:一段时间后我们将停止接收位置信息。看着我们的日志,我们会发现所有的ReactNative日志也将停止。因此,我们对“也许出于能源原因操作系统可能停止了所有ReactNative上下文
因此,我们将背景代码移至了native:
有效!