ConnectivityManager.java在数据业务创建成功(CALLBACK_AVAILABLE)和关闭(CALLBACK_LOST)后等条件都会调用到此处.

对应的文件位置在:\frameworks\base\core\java\android\net\ConnectivityManager.java

对应的CallbackHandler为ConnectivityManager里面的内部类, 如果APP需要在某个时候在链接成功或者断开后进行通知可以再此进行定制.

public void handleMessage(Message message) {

NetworkRequest request = (NetworkRequest) getObject(message, NetworkRequest.class);

Network network = (Network) getObject(message, Network.class);

if (DBG) {

Log.d(TAG, whatToString(message.what) + " for network " + network);

}

switch (message.what) {

case CALLBACK_PRECHECK: {

NetworkCallback callback = getCallback(request, "PRECHECK");

if (callback != null) {

callback.onPreCheck(network);

}

break;

}

case CALLBACK_AVAILABLE: {

NetworkCallback callback = getCallback(request, "AVAILABLE");

if (callback != null) {

callback.onAvailable(network);

}

break;

}

case CALLBACK_LOSING: {

NetworkCallback callback = getCallback(request, "LOSING");

if (callback != null) {

callback.onLosing(network, message.arg1);

}

break;

}

case CALLBACK_LOST: {

NetworkCallback callback = getCallback(request, "LOST");

if (callback != null) {

callback.onLost(network);

}

break;

}

case CALLBACK_UNAVAIL: {

NetworkCallback callback = getCallback(request, "UNAVAIL");

if (callback != null) {

callback.onUnavailable();

}

break;

}

case CALLBACK_CAP_CHANGED: {

NetworkCallback callback = getCallback(request, "CAP_CHANGED");

if (callback != null) {

NetworkCapabilities cap = (NetworkCapabilities)getObject(message,

NetworkCapabilities.class);

callback.onCapabilitiesChanged(network, cap);

}

break;

}

case CALLBACK_IP_CHANGED: {

NetworkCallback callback = getCallback(request, "IP_CHANGED");

if (callback != null) {

LinkProperties lp = (LinkProperties)getObject(message,

LinkProperties.class);

callback.onLinkPropertiesChanged(network, lp);

}

break;

}

case CALLBACK_SUSPENDED: {

NetworkCallback callback = getCallback(request, "SUSPENDED");

if (callback != null) {

callback.onNetworkSuspended(network);

}

break;

}

case CALLBACK_RESUMED: {

NetworkCallback callback = getCallback(request, "RESUMED");

if (callback != null) {

callback.onNetworkResumed(network);

}

break;

}

case CALLBACK_RELEASED: {

NetworkCallback callback = null;

synchronized(mCallbackMap) {

callback = mCallbackMap.remove(request);

}

if (callback != null) {

synchronized(mRefCount) {

if (mRefCount.decrementAndGet() == 0) {

getLooper().quit();

}

}

} else {

Log.e(TAG, "callback not found for RELEASED message");

}

break;

}

case CALLBACK_EXIT: {

Log.d(TAG, "Listener quitting");

getLooper().quit();

break;

}

case EXPIRE_LEGACY_REQUEST: {

expireRequest((NetworkCapabilities)message.obj, message.arg1);

break;

}

}

}

results matching ""

    No results matching ""