web-dev-qa-db-fra.com

Comment exécuter les plugins cordova en arrière-plan?

Je fais une application basée sur PhoneGap (Cordova). Je l'ai testé quelques fois, et récemment j'ai vu un message dans xcode qui disait "Le plugin devrait utiliser un thread d'arrière-plan." Est-il donc possible de faire fonctionner les plugins cordova en arrière-plan de l'application? dans l'affirmative, veuillez indiquer comment. Merci!

20
Thomas M. Tveten

Un thread d'arrière-plan n'est pas le même que l'exécution de code lorsque l'application est en arrière-plan, un thread d'arrière-plan est utilisé pour ne pas bloquer l'interface utilisateur pendant que vous exécutez une longue tâche.

Exemple de fil d'arrière-plan sur 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];
        }];
    }

Exemple de fil d'arrière-plan sur Android

@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;
    }
27
jcesarmobile