Plugins 如何在后台运行cordova插件?

Plugins 如何在后台运行cordova插件?,plugins,cordova,background-process,background-thread,Plugins,Cordova,Background Process,Background Thread,我正在制作一个基于phonegap(cordova)的应用程序。我已经测试过几次了,最近我在xcode中看到一条消息说“插件应该使用后台线程”。那么有可能让cordova插件在应用程序的后台运行吗?如果是,请告诉我怎么做。谢谢 后台线程与在应用程序处于后台时执行代码不同,后台线程用于在执行长任务时不阻塞UI iOS上的后台线程示例 - (void)myPluginMethod:(CDVInvokedUrlCommand*)command { // Check comman

我正在制作一个基于phonegap(cordova)的应用程序。我已经测试过几次了,最近我在xcode中看到一条消息说“插件应该使用后台线程”。那么有可能让cordova插件在应用程序的后台运行吗?如果是,请告诉我怎么做。谢谢

后台线程与在应用程序处于后台时执行代码不同,后台线程用于在执行长任务时不阻塞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;
    }

怎样?这是插件的本机代码。我不明白你的问题是的,我知道这是本机代码,必须在.m文件中。我的问题是,如果我想在后台运行特定的插件,如何使用这个函数不是为了在后台运行特定的插件,而是为了你自己的插件,你不能在后台运行其他插件,除非他们有这个代码,或者你分叉插件,用这个背景代码创建你自己的版本我的意思是,这是要在后台运行的本机代码。如果你想让你的插件在后台运行,它需要runInBackground(iOS)或cordova.getThreadPool().execute(新的Runnable()(android)部分。如果插件不是你的,那么作者应该添加此代码(如果他愿意),或者你分叉插件并添加此更改。这个答案甚至与问题不太接近