react-native中有时候需要定时执行一些后台任务,比如定时发送消息,定时统计数据等.这个时候就需要使用另外注册一个视图来做这些东西了,不然在同步任务中做这些任务,一旦任务比较耗时就会卡住后面的进程,甚至导致后面的进程不再渲染页面.
注册另外一个入口
在合适的位置:页面启动或者某个需要的时候,注册并启动我们的另外一个视图.这个时候其实相当于启动了另外一个线程.
这里注意一下,这个视图里的东西千万不要直接刷新UI相关的数据,所有的内容都应该是内存相关的.
AppRegistry.registerRunnable('RunableTask', TaskRun)
AppRegistry.runApplication('RunableTask', {});
启动定时器
调用init
方法,启动我们自己的定时器刷新方法,这里我暂时定义1秒刷新一次,低于1秒间隔的定时器将不在执行.这里也是为了防止部分人设置低间隔的定时器导致APP崩溃.
这里使用react-native内部提供的requestAnimationFrame
方法,每次刷新的时候先判断一次是否可以执行任务.
const tasks = new Map();
let currDate =