SSLSocket.startHandshake() は、ピア間で初めてハンドシェイクを開始するときの同期呼び出しであり、ハンドシェイクが完了するまで呼び出しスレッドをブロックします。
... ...
// initial handshake between peers, don't need Listener:
sslSocket.startHandshake(); // <- this will block the calling thread.
// handshake is completed at this point
... ...
これはAndroid APIで完全に文書化されていません。完全な javadoc については、元のJava APIを参照してください。
この接続で SSL ハンドシェイクを開始します。一般的な理由には、新しい暗号化キーを使用する必要がある、暗号スイートを変更する、または新しいセッションを開始する必要があるなどがあります。完全な再認証を強制するために、このハンドシェイクを開始する前に現在のセッションを無効にすることができます。
接続上でデータがすでに送信されている場合、このハンドシェイク中もデータは流れ続けます。ハンドシェイクが完了すると、イベントで通知されます。このメソッドは、接続の最初のハンドシェイクに対して同期的であり、ネゴシエートされたハンドシェイクが完了すると戻ります。一部のプロトコルは、既存のソケットで複数のハンドシェイクをサポートせず、IOException をスローする場合があります。
ピア間でハンドシェイクを複数回操作すると、状況がかなり複雑になります。場合によっては非同期呼び出しになる可能性があります (リスナーが必要な場合)。詳細については、このオンライン ドキュメントFundamental Networking in Javaを参照してください。