2016-08-29 6 views
0

サードパーティ製のsdkを使用して反応ネイティブのネイティブモジュールを作成しているときに、「アプリケーションのメインスレッドからxxxxを使用する必要があります」というエラーが表示される私はsdkを初期化します。 アプリケーションのメインスレッドでネイティブモジュールを作成するにはどうすればよいですか?アプリケーションネイティブネイティブモジュールをアプリケーションのメインスレッドに追加する方法

答えて

1

簡単な答えは、メインスレッドで実行する必要のあるコードがあれば、Objective-CでGCDを使用してそのことを確認できるということです。

dispatch_async(dispatch_get_main_queue(), ^{ 
    // Code that needs to be run on the main thread. 
}); 

デフォルトでは、React Nativeはすべてのコードを別のキューで実行します。モジュールが実行されているキューを指定するために、React NativeはmethodQueue関数を提供します。

- (dispatch_queue_t)methodQueue 
{ 
    return dispatch_get_main_queue(); 
} 

あなたのモジュールは、ネイティブUIコンポーネントを作成する例えば、および広範囲に持っている場合、これは参考になる:たとえば、あなたのモジュール内のすべてのコードは、メインスレッド上で実行されますことを指定することができUIKitメソッドを呼び出します。

+0

私はmehodQueue beforについて知らないのですが、私はあなたの答えに応じてiosでそれを使用する方法についてソースコードでいくつかの用法を取り上げましたが、アンドロイドでそれを使用する方法についてはほとんどありません。あなたはアンドロイドでそれを実装する方法を知っていますか、私が参照できるarticalsまたはサンプルコードがありますか?ありがとう! – user1557047

+0

私はそれをアンドロイドで実装するソリューションを見つけました。 ハンドラハンドラ=新しいハンドラ(context.getMainLooper()); handler.post(new Runable(){ //メインスレッドで実行する必要があるコード }) – user1557047

関連する問題