2

誰かがコールバックに渡すことができるエラーメッセージを説明できますか?

public void onResolveFailed(NsdServiceInfo serviceInfo, int errorCode)

以前にエラー コード 3 を見たことがありますが、その意味がわかりません。ドキュメントはせいぜい不安定なようです...

乾杯、

4

5 に答える 5

1

同じ質問があり、NsdManager ソースから回答を得ました。

/**
 * Failures are passed with {@link RegistrationListener#onRegistrationFailed},
 * {@link RegistrationListener#onUnregistrationFailed},
 * {@link DiscoveryListener#onStartDiscoveryFailed},
 * {@link DiscoveryListener#onStopDiscoveryFailed} or {@link ResolveListener#onResolveFailed}.
 *
 * Indicates that the operation failed due to an internal error.
 */
public static final int FAILURE_INTERNAL_ERROR               = 0;

/**
 * Indicates that the operation failed because it is already active.
 */
public static final int FAILURE_ALREADY_ACTIVE              = 3;

/**
 * Indicates that the operation failed because the maximum outstanding
 * requests from the applications have reached.
 */
public static final int FAILURE_MAX_LIMIT                   = 4;

編集:

実際には、開発者向けドキュメントで言及されています: http://developer.android.com/reference/android/net/nsd/NsdManager.html

于 2013-11-29T11:00:43.237 に答える
0

セマフォで同じリスナーを再利用すると、最良の結果が得られることがわかりました。

if (semaphore.tryAcquire()) {
    mNsdManager.resolveService(service, resolveListener);
}

完全にロックする onServiceFound をブロックしたくないため、tryAcquire を使用します。このアプローチにより、最終的にはネットワーク上のすべてのサービスが表示されます。

于 2016-12-31T00:00:31.757 に答える