【问题标题】:How to run cordova plugins in the background?如何在后台运行cordova插件?
【发布时间】:2014-03-13 14:47:23
【问题描述】:

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

【问题讨论】:

    标签: plugins cordova background-process background-thread


    【解决方案1】:

    后台线程与应用程序在后台执行代码不同,后台线程用于在执行长任务时不阻塞 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 文件中。我的问题是,如果我想在后台运行特定的插件,如何使用这个功能
    • 它不是针对特定的后台插件,而是针对您自己的插件,您不能在后台运行其他插件,除非他们有此代码,或者您 fork 插件并使用此背景创建自己的版本代码
    • 我的意思是,这是在后台运行的本机代码。如果您希望您的插件在后台运行,它需要 runInBackground (iOS) 或 cordova.getThreadPool().execute(new Runnable() (android) 部分。如果插件不是您的,那么作者应该添加此代码 (如果他愿意)或者你分叉插件并添加这个更改。
    • 这个答案离问题还很远
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多