connectivity = ConnectivityService.getInstance(context);
ServiceManager.addService(Context.CONNECTIVE_SETVICE,connectvity);
ConnectivityService 啟動時,會從 resource load 進這個 device 所有的 NetworkAttributes[]然後一一將他門生出來..例如 Wifi
case ConnectivityManager.TYPE_WIFI:
Slog.d(TAG, "Starting Wifi Service.");
WifiStateTracker wst = new WifiStateTracker(context, mHandler);
WifiService wifiService = new WifiService(context, wst);
ServiceManager.addService(Context.WIFI_SERVICE, wifiService);
wifiService.startWifi();
mNetTrackers[ConnectivityManager.TYPE_WIFI] = wst;
wst.startMonitoring();
break;
WifiStateTracker 被傳入 WifiServer 中,同時也被 ConnectivityService 紀錄在要照顧的 mNetTrackers[] 陣列中。
不直接在 WifiServer 中實做 WifiStateTracker (介面?) 的原因大概是因為 WifiStateTracker 不是 interface,而是 Abstract Class。
又 java 不允許多重繼承的原因。
而 NetworkStateTracker 又是一個 abstract class, 不是 interface。
.. 問題反而變成 NetworkStateTracker 為什麼是 abstract class, not interface
沒有留言:
張貼留言