线程警告:['Camera']花了'290.006104'ms。插件应该使用后台线程

时间:2014-05-22 06:16:31

标签: ios cordova camera phonegap-plugins cordova-plugins

我正在为IOS构建一个Phonegap应用。我已使用Cordova相机plugin进行个人资料照片上传。我的示例代码是:

navigator.camera.getPicture(that.imageDataSuccessCallback, that.imageDataErrorCallback, { quality: 10, destinationType: 1, encodingType: 0, allowEdit: true, correctOrientation: true, sourceType:0 });

当我点击该特定按钮时,我收到警告

THREAD WARNING: ['Camera'] took '290.006104' ms. Plugin should use a background thread.

它阻止了我的应用。任何人都可以建议如何解决这个问题吗?

1 个答案:

答案 0 :(得分:6)

我不确定您是否应该关注290ms,但如果您是,则可以执行以下操作:

由于navigator.camera.getPicture()中的Camera.js正在调用-(void)takePicture:(CDVInvokeUrlCommand*)command中的CDVCamera.m方法,您必须在那里添加线程

打开CDVCamera.m并在takePicture方法的第一行之前添加以下内容:

[self.commandDelegate runInBackground:^{

在最后一行之后添加:

}];

所以看起来应该是这样的:

- (void)takePicture:(CDVInvokedUrlCommand*)command
{
    [self.commandDelegate runInBackground:^{
        NSString* callbackId = command.callbackId;
        NSArray* arguments = command.arguments;

        ...
        ...
        ...

        self.hasPendingOperation = YES;
    }];
}

以下是使用后台模式look for THREADING构建Cordova插件的参考: