ubuntu 在 R40e 上 還有 Debian 在 Sempron 2600 上

2012年12月10日 星期一

android, Wifi Service -- code reading,

SystemServer.java 啟動 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


沒有留言:

標籤

網誌存檔