21

非同期スレッドがメインスレッドとは別に動作し、メインスレッドに干渉しないスレッドである場合...

を介して開始された後、newActivityはメイン スレッドを占有しませんstartActivity(intent)か?

私がこれについて読んだことの大部分は、これらは両方とも非同期であると言いますが、かなりの数の矛盾する答えがあり、これを言う人々は実際には説得力のある議論をしていません.

したがって、頭の中でこれを明確に理解し、同期/非同期である理由を説明できる人がいれば、私は非常に感謝しています!

乾杯

編集:だから、私がこれらの2つの善良な人々とオンラインのものから導き出した答え...

アクティビティを同期/非同期の混合に持ち込むと、馬の負荷が発生する可能性があります。しかし、それはまだ...の原則に言及しています...

Synchronousメソッド/コマンドは、コール スタックを続行する前に完了する必要があります。

Asynchronousメソッド/コマンド (通常はスレッド/AsyncTask で行われる) は並行して続行され、実行のメイン スレッドが続行されます。(時間内に戻ることができます)

およびメソッドは非ブロッキングであり、対応するタスクを実行しながら実行スレッドを継続できるため、非同期ですstartActivity(intent)startActivityForResult(intent)

4

2 に答える 2

29

startActivity(intent)startActivityForResult(intent)これらのメソッドは、アクティビティを開始せずにすぐに戻るという意味で非同期です。実際には、現在のアクティビティのライフサイクル イベントが終了した後にのみアクティビティを開始するようにスケジュールします。

要点は、最初のアクティビティの方法では、完了するまでに時間がかかる何かがある場合onPause()、新しいアクティビティのActivity開始が遅くなるということです。

于 2012-12-17T17:54:34.653 に答える
3

startActivityForResultまだ非同期呼び出しを実行している場合。呼び出し元のアクティビティが中断され、新しいプロセスが別のプロセスで開始されます (別のユーザーで実行されている場合)。

ただし、呼び出されたアクティビティが結果の設定を終了すると、アクティビティが再開され、結果を含むコールバックとしてonActivityResultが呼び出されます。

于 2012-12-20T11:45:36.387 に答える