javascript - 即使应用程序在后台,如何保持后台计时器在 native react 中运行

标签 javascript reactjs react-native

我正在开发一款 React 原生应用,供用户跟踪他们的健身房锻炼情况。我想在用户开始锻炼时启动一个计时器。在锻炼期间,他们会输入信息,然后很可能会锁定手机,甚至可能在锻炼期间使用其他应用程序。运行一个简单的 setInterval 来跟踪时间是行不通的,因为一旦应用程序在后台,就没有 JS 能够再运行了。我发现这个库使用 native 代码 https://github.com/ocetnik/react-native-background-timer让你的 javascript 在后台运行,但目前似乎有一些错误。我发现在后台 10 秒后 JS 逻辑停止运行。

react-native: "0.60.5

最佳答案

我最终得到的答案是停止尝试在后台运行计时器,而是使用时间戳来计算两次之间的差异,因为很难以跨平台的方式在后台可靠地运行逻辑,而没有很多增加了复杂性。

使用下面的函数,我会在计时器需要启动时使用 moment.js 生成一个时间戳,然后在计时器需要停止时生成另一个时间戳并计算它们之间的差异。

const getCurrentTimeInWithMomentLibary = moment().format( 'MM/DD/YYYY HH:mm:ss' );


const diffTime = ( then, now ) => {
  const ms = moment( now, 'MM/DD/YYYY HH:mm:ss' )
    .diff( moment( then, 'MM/DD/YYYY HH:mm:ss' ) );
  const duration = moment.duration( ms );
  const hours = Math.floor( duration.asHours() );

  const currentDate = moment().format( 'MM/DD/YYYY' );
  const time = `${ hours }:${ moment.utc( ms ).format( 'mm:ss' ) }`;
  return `${ currentDate } ${ time }`;
};

关于javascript - 即使应用程序在后台,如何保持后台计时器在 native react 中运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58714032/

相关文章:

javascript - AJAX 请求有效负载未显示在控制台日志中

javascript - javascript确认后调用php函数

javascript - ReactJs 在按钮单击时更改文本问题

javascript - 在本地浏览器中运行简单的react js

javascript - 如果 var a = function b(){} 会发生什么

reactjs - react-admin 登录页面中的背景图片

javascript - 开 Jest - 语法错误 : React Navigation - Unexpected token export for [node_modules\react-navigation\src\react-navigation. js:1]

ios - 使用 React Native 在 IOS 运行时出现 "Unhandled JS Exception: Native module cannot be null"错误

react-native - react native : No dimension set for key window in production

javascript - Phonegap+Ember+jQuery+Bootstrap 通过 jQuery 访问按钮?