zoukankan      html  css  js  c++  java
  • React Native Headless JS(后台任务)(转载)

    React Native Headless JS(后台任务)

    Headless JS是一种使用js在后台执行任务的方法。它可以用来在后台同步数据、处理推送通知或是播放音乐等等。

    JS端的API

    首先我们要通过AppRegistry来注册一个async函数,这个函数我们称之为“任务”。注册方式类似在index.js中注册RN应用:

    AppRegistry.registerHeadlessTask('SomeTaskName', () => require('SomeTaskName'));

    然后创建require对应的SomeTaskName.js文件:

    module.exports = async (taskData) => {
      // 要做的事情
    }

    你可以在任务中处理任何事情(网络请求、定时器等等),但唯独不要涉及用户界面!在任务完成后(例如在promise中调用resolve),RN会进入一个“暂停”模式,直到有新任务需要执行或者是应用回到前台。

    Java端的API

    没错,我们还需要一些原生代码,但是请放心并不麻烦。你需要像下面这样继承HeadlessJsTaskService,然后覆盖getTaskConfig方法的实现:

    public class MyTaskService extends HeadlessJsTaskService {
      @Override
      protected @Nullable HeadlessJsTaskConfig getTaskConfig(Intent intent) {
        Bundle extras = intent.getExtras();
        if (extras != null) {
          return new HeadlessJsTaskConfig(
              "SomeTaskName",
              Arguments.fromBundle(extras),
              5000);
        }
        return null;
      }
    }

    好了,现在当你启动服务时(例如一个周期性的任务或是响应一些系统事件/广播),JS任务就会开始执行。

    注意事项

    默认情况下,如果应用正在前台运行时尝试执行任务,那么应用会崩溃。这是为了防止开发者在任务中处理太多逻辑而拖慢用户界面

    如果你是通过BroadcastReceiver来启动的服务,那么谨记在从onReceive()返回之前要调用HeadlessJsTaskService.acquireWakelockNow()



    作者:呼呼哥
    链接:https://www.jianshu.com/p/2e606dad7356
    來源:简书
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
  • 相关阅读:
    C语言初学者应该知道的(一)
    【文摘】中国IT从业者的职业——软件项目管理师
    只有荒凉的沙漠,没有荒凉的人生 ——黄渤
    定时更改桌面背景
    C语言初学者应该知道的(二)
    整理那些书
    Linux操作系统———李纳斯
    【c笔记】一个很好的编程题
    【c 笔记】windows的wsprintf不支持浮点型的%f
    【文摘】中国IT从业者的职业——软件测试员
  • 原文地址:https://www.cnblogs.com/qiyecao/p/8324216.html
Copyright © 2011-2022 走看看