Как запустить фоновое задание, даже если устройство перезагружается в режиме реагирования? - PullRequest
0 голосов
/ 17 декабря 2018

Я хочу создать приложение, которое будет извлекать данные с сервера в фоновом режиме.Я использую response-native-queue, но он не работает при перезапуске устройства.Есть ли решение?

export default class Stores extends Component<{}> {

constructor(props){
    super(props);
    this.state = { nodes: [], isFetching: false, mailListener:{connecting:false},queue: null};
  }

componentDidMount(){
    this.init();
  }

async init() {
    const queue = await queueFactory();
    const present = this;

    queue.addWorker('listener', async (id, payload) => {

      //my jobs here

      await new Promise((resolve) => {
        setTimeout(async () => {
          // Keep creating these jobs until counter reaches 3.
            queue.createJob('listener');
          resolve();
        }, 3000);
      });
    });

    queue.createJob('listener');

    queue.start();

    // Attach initialized queue to state.
    this.setState({
      queue
    });
  }

}

1 Ответ

0 голосов
/ 17 декабря 2018

Вы можете использовать что-то вроде response-nativeo-threads, но ничто не может помешать пользователю закрыть ваше приложение.Это также будет происходить при каждом перезапуске устройства.Нет необходимости извлекать данные, когда приложение закрыто, так как насчет того, чтобы делать выборку при каждом запуске приложения, чтобы пользователь всегда видел актуальную информацию?У меня была похожая задача в моем приложении, и вот еще несколько советов от меня:

-позволяет пользователю обновлять данные самостоятельно (я использовал pull для обновления списка)

-сделать бэкэндотправлять события, и ваше приложение может их прослушивать, поэтому вам не нужно синхронизировать

- задание синхронизации в фоновом режиме не может быть выполнено с интервалом менее 20 минут.Ваше приложение будет отклонено из магазинов приложений, если вы сделаете это из-за разряда батареи.

Удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...