Я делаю приложение на основе телефонной связи (кордова). Я тестировал его несколько раз, и недавно я увидел сообщение в xcode, в котором говорилось: «Плагин должен использовать фоновый поток». Так можно ли заставить плагины Cordova работать в фоновом режиме? если да то подскажите как. Спасибо!
Как запустить плагины Cordova в фоновом режиме?
Ответы (1)
Фоновый поток — это не то же самое, что выполнение кода, когда приложение находится в фоновом режиме, фоновый поток используется, чтобы не блокировать пользовательский интерфейс во время выполнения длительной задачи.
Пример фонового потока на iOS
- (void)myPluginMethod:(CDVInvokedUrlCommand*)command
{
// Check command.arguments here.
[self.commandDelegate runInBackground:^{
NSString* payload = nil;
// Some blocking logic...
CDVPluginResult* pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsString:payload];
// The sendPluginResult method is thread-safe.
[self.commandDelegate sendPluginResult:pluginResult callbackId:command.callbackId];
}];
}
Пример фонового потока на андроиде
@Override
public boolean execute(String action, JSONArray args, final CallbackContext callbackContext) throws JSONException {
if ("beep".equals(action)) {
final long duration = args.getLong(0);
cordova.getThreadPool().execute(new Runnable() {
public void run() {
...
callbackContext.success(); // Thread-safe.
}
});
return true;
}
return false;
}
person
jcesarmobile
schedule
14.03.2014
как? это собственный код плагина. я не понимаю твой вопрос
- person jcesarmobile; 26.02.2015
Да, я знаю, что это собственный код, который должен быть в файле .m. Мой вопрос в том, как использовать эту функцию, если я хочу запустить определенный плагин в фоновом режиме.
- person developer; 27.02.2015
это не для конкретного плагина в фоновом режиме, это для вашего собственного плагина, вы не можете запускать другие плагины в фоновом режиме, если у них нет этого кода, или вы разветвляете плагин и создаете свою собственную версию с этим фоновым кодом
- person jcesarmobile; 27.02.2015
Вы хотите сказать, что если я хочу, чтобы плагин работал в фоновом режиме, я должен отредактировать этот код и указать этот логин?
- person developer; 27.02.2015
Я имею в виду, что это нативный код для запуска в фоновом режиме. Если вы хотите, чтобы ваш плагин работал в фоновом режиме, ему нужна часть runInBackground (iOS) или cordova.getThreadPool().execute(new Runnable() (android). Если плагин не ваш, то автор должен добавить этот код ( если он хочет) или вы форкаете плагин и добавляете эти изменения.
- person jcesarmobile; 27.02.2015
@developer, на самом деле да, вы можете просто отредактировать код плагина, чтобы он работал. Но имейте в виду, что при обновлении плагина ваши изменения будут удалены. Поэтому для сохранения этого кода вам нужно сделать, как сказал jcesarmobile (попросите владельца плагина внести эти изменения или разветвить).
- person extempl; 22.07.2015
Этот ответ даже не близок к вопросу
- person Varun Kumar; 20.08.2018
@VarunKumar, как вы думаете, принятый ответ с 22 голосами даже не близок к вопросу? Ответ хороший. Вы и другой даунвотер ищете что-то отличное от того, о чем здесь спрашивают. Это не запуск плагинов, когда устройство находится в фоновом режиме, а запуск кода плагина в фоновом потоке, чтобы не блокировать пользовательский интерфейс во время выполнения кода.
- person jcesarmobile; 20.08.2018