web-dev-qa-db-ja.com

コルドバは、iOSで「スレッド警告:[関数]に[n]ミリ秒かかりました。」として警告を表示します

 "THREAD WARNING: ['Console'] took '81.661865' ms. Plugin should use a  background thread."

iOS Phonegapプロジェクトの実行中。同様に、ジオロケーションやファイルシステムなどの残りのプラグインのいくつかについても同様です。

Phonegapは初めてなので、バックグラウンドスレッドでプラグインを実行する方法を教えてください。

this もチェックしました。

このスレッドの警告を無視できますか、それともiOSPhone-gapのメモリの問題に関連していますか?

ありがとう

12
soumya

this による。警告の問題を解決しました

警告は無視できることがわかりましたが、これはこのループを使用してバックグラウンドスレッドを追加することで解決できます:(CDVLogger.m内)

 [self.commandDelegate runInBackground:^{

    //add your code here
 }

これで、コンソールの警告は次のようになります。

- (void)logLevel:(CDVInvokedUrlCommand*)command
 {
   [self.commandDelegate runInBackground:^{
   id level = [command argumentAtIndex:0];
   id message = [command argumentAtIndex:1];

  if ([level isEqualToString:@"LOG"]) {
    NSLog(@"%@", message);
  } else {
      NSLog(@"%@: %@", level, message);
   }
 }];
}
5
soumya

また、追加するには、

誰かがiOSCordovaでバックグラウンドスレッドとしてGeolocationプラグインを個別に実行する方法を探している場合は、GitHubに修正があります。

Xcode出力の警告を削除します:「スレッド警告:['Geolocation']は 'X'ミリ秒かかりました。プラグインはバックグラウンドスレッドを使用する必要があります。」

ここからプラグインをダウンロードします: https://github.com/guillaumedev/cordova-plugin-geolocation

変更点は次のとおりです(runInBackgroundが追加されました): https://github.com/guillaumedev/cordova-plugin-geolocation/commit/8fbceca845441f4f421548f243d2f05573d11225

Cordovaスレッドの詳細: https://cordova.Apache.org/docs/en/dev/guide/platforms/ios/plugin.html#threading

1
sputn1k