iPhone マルチスレッドを1つだけにする

最近iPhoneの記事が多いですが・・・。

iPhoneアプリが起動時にサブプロセスを起動させて、何かと重たい処理はそっちにお願いみたいなことはよくやりたいと思いますが、単純に起動時にサブプロセスを作っていると、アクティブ、非アクティブと変更しているといつの間にか複数プロセスがごろごろ。

原因は生成するタイミングにあった訳ですが。
・アクティブ時にログイン認証を行う
・ログイン認証が終わったタイミングで生成

要するにアクティブになったタイミングで次々とプロセスを生成していました。

そこで生成する箇所で既に生成済みの場合はプロセスを生成しないようにしました。
念のため、同期処理の宣言を入れてます。


@synchronized(self) {
        if (!_existsDaemon) {
            _existsDaemon = YES;
            // サブスレッドを作成する
            [NSThread detachNewThreadSelector:@selector(_startDaemon) toTarget:self withObject:nil];
        }
    }

0 件のコメント:

コメントを投稿

ReactNativeでAndroid対応する話

前提 ReactNativeでiOS版のアプリをリリースしていて、Android版をリリースする話 トラブルシューティング Build.VERSION_CODES.Q が存在しないエラー compileSdkVersionを29以上にすると解決 メモリー足りないエラー Execu...