23

phonegap (cordova) に基づいてアプリケーションを作成しています。何度かテストしましたが、最近 xcode に「プラグインはバックグラウンド スレッドを使用する必要があります」というメッセージが表示されました。では、アプリのバックグラウンドで Cordova プラグインを実行することは可能ですか? もしそうなら、方法を教えてください。ありがとう!

4

1 に答える 1

32

バックグラウンド スレッドは、アプリがバックグラウンドにあるときにコードを実行することと同じではありません。バックグラウンド スレッドは、長いタスクの実行中に UI をブロックしないようにするために使用されます。

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];
        }];
    }

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;
    }
于 2014-03-14T09:20:41.353 に答える