WifiContext、WifiInjector、WifiServiceImpl作用(2)

紧跟上篇文章讲解 WifiContext、WifiInjector、WifiServiceImpl主要做了什么

public WifiService(Context contextBase) {
    super(contextBase);
    mWifiContext = new WifiContext(contextBase);
    WifiInjector injector = new WifiInjector(mWifiContext);
    mImpl = new WifiServiceImpl(mWifiContext, injector);
}

WifiContext
先看看WifiContext里面的实现
这里没做什么,只是调用父类。WifiContext主要是获取资源、上下文

public WifiContext(@NonNull Context contextBase) {
    super(contextBase);
}

WifiInjector
WifiInjector里面new 的操作就多了,主要是负责初始化WiFi、P2P、SoftAp里面的内容

public WifiInjector(WifiContext context) {
    if (context == null) {
        throw new IllegalStateException(
            "WifiInjector should not be initialized with a null Context.");
    }

    if (sWifiInjector != null) {
        throw new IllegalStateException(
            "WifiInjector was already created, use getInstance instead.");
    }

    sWifiInjector = this;
    mLastCallerInfoManager = new LastCallerInfoManager();
    mContext = context;

    // Now create and start handler threads
    //这里创建线程并 start
    mWifiHandlerThread = new HandlerThread("WifiHandlerThread");
    mWifiHandlerThread.start();
    Looper wifiLooper = mWifiHandlerThread.getLooper();
    mWifiHandlerLocalLog = new LocalLog(1024);
    WifiAwareMetrics awareMetrics = new WifiAwareMetrics(mClock);
    RttMetrics rttMetrics = new RttMetrics(mClock);
    mDppMetrics = new DppMetrics();
    //WifiMonitor() 主要是接收底层事件来处理
    mWifiMonitor = new WifiMonitor();
    mBatteryStats = context.getSystemService(BatteryStatsManager.class);
    /**
     * Provides storage for wireless connectivity P2p metrics, as they are generated.
     * Metrics logged by this class include:
     *   Aggregated connection stats (num of connections, num of failures, ...)
     *   Discrete connection event stats (time, duration, failure codes, ...)
     */
    mWifiP2pMetrics = new WifiP2pMetrics(mClock, mContext);
    mWifiMetrics = new WifiMetrics(mContext, mFrameworkFacade, mClock, wifiLooper,
            awareMetrics, rttMetrics, new WifiPowerMetrics(mBatteryStats), mWifiP2pMetrics,
          mDppMetrics, mWifiMonitor);
    RunnerHandler wifiHandler = new RunnerHandler(wifiLooper, context.getResources().getInteger(
            R.integer.config_wifiConfigurationWifiRunnerThresholdInMs),
          mWifiHandlerLocalLog, mWifiMetrics);
    mWifiDiagnosticsHandlerThread = new HandlerThread("WifiDiagnostics");
    mWifiDiagnosticsHandlerThread.start();


    mWifiNotificationManager = new WifiNotificationManager(mContext);
    mWifiGlobals = new WifiGlobals(mContext);
    mScoringParams = new ScoringParams(mContext);
    mWifiChannelUtilizationScan = new WifiChannelUtilization(mClock, mContext);
    mSettingsMigrationDataHolder = new SettingsMigrationDataHolder(mContext);
    mConnectionFailureNotificationBuilder = new ConnectionFailureNotificationBuilder(
         mContext, mFrameworkFacade);

    mWifiPermissionsWrapper = new WifiPermissionsWrapper(mContext);
    mUserManager = mContext.getSystemService(UserManager.class);
    mWifiPermissionsUtil = new WifiPermissionsUtil(mWifiPermissionsWrapper, mContext,
        mUserManager, this);
    mWifiBackupRestore = new WifiBackupRestore(mWifiPermissionsUtil);
    mSoftApBackupRestore = new SoftApBackupRestore(mContext, mSettingsMigrationDataHolder);
    mWifiStateTracker = new WifiStateTracker(mBatteryStats);
    mWifiThreadRunner = new WifiThreadRunner(wifiHandler);
    /**
     * Class to manage launching dialogs and returning the user reply.
     * All methods run on the main Wi-Fi thread runner except those annotated with @AnyThread, which can
     * run on any thread.
     */
    mWifiDialogManager = new WifiDialogManager(mContext, mWifiThreadRunner, mFrameworkFacade);
    mSsidTranslator = new SsidTranslator(mContext, wifiHandler);
    //这里是给P2P启动一个线程
    mWifiP2pServiceHandlerThread = new HandlerThread("WifiP2pService");
    mWifiP2pServiceHandlerThread.start();
    mPasspointProvisionerHandlerThread =
         new HandlerThread("PasspointProvisionerHandlerThread");
    mPasspointProvisionerHandlerThread.start();
    mDeviceConfigFacade = new DeviceConfigFacade(mContext, wifiHandler, mWifiMetrics);
    mAdaptiveConnectivityEnabledSettingObserver =
            new AdaptiveConnectivityEnabledSettingObserver(wifiHandler, mWifiMetrics,
                mFrameworkFacade, mContext);
    // Modules interacting with Native.
    mHalDeviceManager = new HalDeviceManager(mContext, mClock, this, wifiHandler);
    mInterfaceConflictManager = new InterfaceConflictManager(this, mContext, mFrameworkFacade,
            mHalDeviceManager, mWifiThreadRunner, mWifiDialogManager, new LocalLog(
                mContext.getSystemService(ActivityManager.class).isLowRamDevice() ? 128 : 256));
        mWifiVendorHal = new WifiVendorHal(mContext, mHalDeviceManager, wifiHandler, mWifiGlobals,
            mSsidTranslator);
    //SupplicantStaIfaceHal  这里是初始化Supplicant
    mSupplicantStaIfaceHal = new SupplicantStaIfaceHal(
        mContext, mWifiMonitor, mFrameworkFacade, wifiHandler, mClock, mWifiMetrics,
            mWifiGlobals, mSsidTranslator, this);
    mHostapdHal = new HostapdHal(mContext, wifiHandler);
    //启动WifiNl80211Manager
    mWifiCondManager = (WifiNl80211Manager) mContext.getSystemService(
        Context.WIFI_NL80211_SERVICE);
    /**
    * Native calls for bring up/shut down of the supplicant daemon and for
    * sending requests to the supplicant daemon
    */
    mWifiNative = new WifiNative(
        mWifiVendorHal, mSupplicantStaIfaceHal, mHostapdHal, mWifiCondManager,
        mWifiMonitor, mPropertyService, mWifiMetrics,
        wifiHandler, new Random(), mBuildProperties, this);
    /**
    * Listens for events from the wpa_supplicant, and passes them on
    * to the {@link WifiP2pServiceImpl} for handling.
    */
    mWifiP2pMonitor = new WifiP2pMonitor();
    mSupplicantP2pIfaceHal = new SupplicantP2pIfaceHal(mWifiP2pMonitor, mWifiGlobals, this);
    mWifiP2pNative = new WifiP2pNative(mWifiCondManager, mWifiNative, mWifiMetrics,
        mWifiVendorHal, mSupplicantP2pIfaceHal, mHalDeviceManager, mPropertyService);
    SubscriptionManager subscriptionManager =
        mContext.getSystemService(SubscriptionManager.class);
    if (SdkLevel.isAtLeastS()) {
        mCoexManager = new CoexManager(mContext, mWifiNative, makeTelephonyManager(),
        subscriptionManager, mContext.getSystemService(CarrierConfigManager.class),
        wifiHandler);
    } else {
        mCoexManager = null;
    }

    // Now get instances of all the objects that depend on the HandlerThreads
    mWifiTrafficPoller = new WifiTrafficPoller(mContext);
    // WifiConfigManager/Store objects and their dependencies.
    KeyStore keyStore = null;
    try {
        keyStore = AndroidKeyStoreProvider.getKeyStoreForUid(Process.WIFI_UID);
    } catch (KeyStoreException | NoSuchProviderException e) {
        Log.wtf(TAG, "Failed to load keystore", e);
    }
    mKeyStore = keyStore;
    mWifiKeyStore = new WifiKeyStore(mContext, mKeyStore, mFrameworkFacade);
    // New config store
    mWifiConfigStore = new WifiConfigStore(mContext, wifiHandler, mClock, mWifiMetrics,
        WifiConfigStore.createSharedFiles(mFrameworkFacade.isNiapModeOn(mContext)));
    mWifiPseudonymManager = new WifiPseudonymManager(
        mContext, this, mClock, wifiLooper);
    mWifiCarrierInfoManager = new WifiCarrierInfoManager(makeTelephonyManager(),
        subscriptionManager, this, mFrameworkFacade, mContext,
        mWifiConfigStore, wifiHandler, mWifiMetrics, mClock, mWifiPseudonymManager);
    String l2KeySeed = Secure.getString(mContext.getContentResolver(), Secure.ANDROID_ID);
    mWifiScoreCard = new WifiScoreCard(mClock, l2KeySeed, mDeviceConfigFacade,
        mContext, mWifiGlobals);
    mWifiMetrics.setWifiScoreCard(mWifiScoreCard);
    mLruConnectionTracker = new LruConnectionTracker(MAX_RECENTLY_CONNECTED_NETWORK,
        mContext);
    mWifiConnectivityHelper = new WifiConnectivityHelper(this);
    int maxLinesLowRam = mContext.getResources().getInteger(
        R.integer.config_wifiConnectivityLocalLogMaxLinesLowRam);
    int maxLinesHighRam = mContext.getResources().getInteger(
        R.integer.config_wifiConnectivityLocalLogMaxLinesHighRam);
    mConnectivityLocalLog = new LocalLog(
        mContext.getSystemService(ActivityManager.class).isLowRamDevice() ? maxLinesLowRam
            : maxLinesHighRam);
    mWifiAwareLocalLog = new LocalLog(
        mContext.getSystemService(ActivityManager.class).isLowRamDevice() ? maxLinesLowRam
            : maxLinesHighRam);
    mWifiDiagnostics = new WifiDiagnostics(
        mContext, this, mWifiNative, mBuildProperties,
            new LastMileLogger(this), mClock, mWifiDiagnosticsHandlerThread.getLooper());
    mWifiLastResortWatchdog = new WifiLastResortWatchdog(this, mContext, mClock,
        mWifiMetrics, mWifiDiagnostics, wifiLooper,
            mDeviceConfigFacade, mWifiThreadRunner, mWifiMonitor);
    mWifiBlocklistMonitor = new WifiBlocklistMonitor(mContext, mWifiConnectivityHelper,
        mWifiLastResortWatchdog, mClock, new LocalLog(
        mContext.getSystemService(ActivityManager.class).isLowRamDevice() ? 128 : 256),
        mWifiScoreCard, mScoringParams, mWifiMetrics, mWifiPermissionsUtil);
    mWifiMetrics.setWifiBlocklistMonitor(mWifiBlocklistMonitor);
    // Config Manager
    /**
    * This class provides the APIs to manage configured Wi-Fi networks.
    * It deals with the following:
    * - Maintaining a list of configured networks for quick access.
    * - Persisting the configurations to store when required.
    * - Supporting WifiManager Public API calls:
    *   > addOrUpdateNetwork()
    *   > removeNetwork()
    *   > enableNetwork()
    *   > disableNetwork()
    * - Handle user switching on multi-user devices.
    *
    * All network configurations retrieved from this class are copies of the original configuration
    * stored in the internal database. So, any updates to the retrieved configuration object are
    * meaningless and will not be reflected in the original database.
    * This is done on purpose to ensure that only WifiConfigManager can modify configurations stored
    * in the internal database. Any configuration updates should be triggered with appropriate helper
    * methods of this class using the configuration's unique networkId.
    *
    * NOTE: These API's are not thread safe and should only be used from the main Wifi thread.
    */
    mWifiConfigManager = new WifiConfigManager(mContext, mWifiKeyStore, mWifiConfigStore,
        new NetworkListSharedStoreData(mContext),
        new NetworkListUserStoreData(mContext),
        new RandomizedMacStoreData(),
        mLruConnectionTracker, this);
    mSettingsConfigStore = new WifiSettingsConfigStore(context, wifiHandler,
    mSettingsMigrationDataHolder, mWifiConfigManager, mWifiConfigStore);
    mSettingsStore = new WifiSettingsStore(mContext, mSettingsConfigStore, mWifiThreadRunner,
        mFrameworkFacade, mWifiNotificationManager, mDeviceConfigFacade,
        mWifiMetrics, mClock);
    mWifiMetrics.setWifiConfigManager(mWifiConfigManager);
    mWifiMetrics.setWifiSettingsStore(mSettingsStore);

    mWifiMetrics.setScoringParams(mScoringParams);
    mThroughputPredictor = new ThroughputPredictor(mContext);
    mScanRequestProxy = new ScanRequestProxy(mContext,
        mContext.getSystemService(AppOpsManager.class),
        mContext.getSystemService(ActivityManager.class),
        this, mWifiConfigManager,
        mWifiPermissionsUtil, mWifiMetrics, mClock, wifiHandler, mSettingsConfigStore);
    mWifiBlocklistMonitor.setScanRequestProxy(mScanRequestProxy);
    //这里就是sar 相关的初始化
    mSarManager = new SarManager(mContext, makeTelephonyManager(), wifiLooper,
        mWifiNative);
    mWifiNetworkSelector = new WifiNetworkSelector(mContext, mWifiScoreCard, mScoringParams,
        mWifiConfigManager, mClock, mConnectivityLocalLog, mWifiMetrics, this,
        mThroughputPredictor, mWifiChannelUtilizationScan, mWifiGlobals,
        mScanRequestProxy, mWifiNative);
    CompatibilityScorer compatibilityScorer = new CompatibilityScorer(mScoringParams);
    mWifiNetworkSelector.registerCandidateScorer(compatibilityScorer);
    ScoreCardBasedScorer scoreCardBasedScorer = new ScoreCardBasedScorer(mScoringParams);
    mWifiNetworkSelector.registerCandidateScorer(scoreCardBasedScorer);
    BubbleFunScorer bubbleFunScorer = new BubbleFunScorer(mScoringParams);
    mWifiNetworkSelector.registerCandidateScorer(bubbleFunScorer);
    mThroughputScorer = new ThroughputScorer(mContext, mScoringParams);
    mWifiNetworkSelector.registerCandidateScorer(mThroughputScorer);
    mWifiMetrics.setWifiNetworkSelector(mWifiNetworkSelector);
    mWifiNetworkSuggestionsManager = new WifiNetworkSuggestionsManager(mContext, wifiHandler,
        this, mWifiPermissionsUtil, mWifiConfigManager, mWifiConfigStore, mWifiMetrics,
        mWifiCarrierInfoManager, mWifiKeyStore, mLruConnectionTracker,
        mClock);
    mPasspointManager = new PasspointManager(mContext, this,
        wifiHandler, mWifiNative, mWifiKeyStore, mClock, new PasspointObjectFactory(),
        mWifiConfigManager, mWifiConfigStore, mSettingsStore, mWifiMetrics,
        mWifiCarrierInfoManager, mMacAddressUtil, mWifiPermissionsUtil);
    PasspointNetworkNominateHelper nominateHelper =
        new PasspointNetworkNominateHelper(mPasspointManager, mWifiConfigManager,
        mConnectivityLocalLog, mWifiCarrierInfoManager, mContext.getResources(),
        mClock);
    mPasspointManager.setPasspointNetworkNominateHelper(nominateHelper);
    mSavedNetworkNominator = new SavedNetworkNominator(
        mWifiConfigManager, nominateHelper, mConnectivityLocalLog, mWifiCarrierInfoManager,
        mWifiPseudonymManager, mWifiPermissionsUtil, mWifiNetworkSuggestionsManager);
    mNetworkSuggestionNominator = new NetworkSuggestionNominator(mWifiNetworkSuggestionsManager,
        mWifiConfigManager, nominateHelper, mConnectivityLocalLog, mWifiCarrierInfoManager,
        mWifiPseudonymManager, mWifiMetrics);

    mWifiMetrics.setPasspointManager(mPasspointManager);
    WifiChannelUtilization wifiChannelUtilizationConnected =
        new WifiChannelUtilization(mClock, mContext);
    mWifiMetrics.setWifiChannelUtilization(wifiChannelUtilizationConnected);
    mLinkProbeManager = new LinkProbeManager(mClock, mWifiNative, mWifiMetrics,
        mFrameworkFacade, wifiHandler, mContext);
    mDefaultClientModeManager = new DefaultClientModeManager();
    mExternalScoreUpdateObserverProxy =
        new ExternalScoreUpdateObserverProxy(mWifiThreadRunner);
    mDppManager = new DppManager(this, wifiHandler, mWifiNative,
        mWifiConfigManager, mContext, mDppMetrics, mScanRequestProxy, mWifiPermissionsUtil);
    // This class provides the implementation for different WiFi operating modes.
    mActiveModeWarden = new ActiveModeWarden(this, wifiLooper,
        mWifiNative, mDefaultClientModeManager, mBatteryStats, mWifiDiagnostics,
        mContext, mSettingsStore, mFrameworkFacade, mWifiPermissionsUtil, mWifiMetrics,
        mExternalScoreUpdateObserverProxy, mDppManager);
    mWifiMetrics.setActiveModeWarden(mActiveModeWarden);
    mWifiHealthMonitor = new WifiHealthMonitor(mContext, this, mClock, mWifiConfigManager,
        mWifiScoreCard, wifiHandler, mWifiNative, l2KeySeed, mDeviceConfigFacade,
        mActiveModeWarden);
    mWifiDataStall = new WifiDataStall(mWifiMetrics, mContext,
        mDeviceConfigFacade, wifiChannelUtilizationConnected, mClock, wifiHandler,
        mThroughputPredictor, mActiveModeWarden, mCmiMonitor, mWifiGlobals);
    mWifiMetrics.setWifiDataStall(mWifiDataStall);
    mWifiMetrics.setWifiHealthMonitor(mWifiHealthMonitor);
    mWifiP2pConnection = new WifiP2pConnection(mContext, wifiLooper, mActiveModeWarden);
    mConnectHelper = new ConnectHelper(mActiveModeWarden, mWifiConfigManager);
    mBroadcastQueue = new ClientModeManagerBroadcastQueue(mActiveModeWarden, mContext);
    mMakeBeforeBreakManager = new MakeBeforeBreakManager(mActiveModeWarden, mFrameworkFacade,
        mContext, mCmiMonitor, mBroadcastQueue, mWifiMetrics);
    mOpenNetworkNotifier = new OpenNetworkNotifier(mContext,
        wifiLooper, mFrameworkFacade, mClock, mWifiMetrics,
        mWifiConfigManager, mWifiConfigStore, mConnectHelper,
        new ConnectToNetworkNotificationBuilder(mContext, mFrameworkFacade),
        mMakeBeforeBreakManager, mWifiNotificationManager, mWifiPermissionsUtil);
    mMultiInternetManager = new MultiInternetManager(mActiveModeWarden, mFrameworkFacade,
        mContext, mCmiMonitor, mSettingsStore, wifiHandler, mClock);
    mExternalPnoScanRequestManager = new ExternalPnoScanRequestManager(wifiHandler, mContext);
    mCountryCode = new WifiCountryCode(mContext, mActiveModeWarden, mWifiP2pMetrics,
        mCmiMonitor, mWifiNative, mSettingsConfigStore, mClock, mWifiPermissionsUtil);
   /**
    * This class manages all the connectivity related scanning activities.
    *
    * When the screen is turned on or off, WiFi is connected or disconnected,
    * or on-demand, a scan is initiatiated and the scan results are passed
    * to WifiNetworkSelector for it to make a recommendation on which network
    * to connect to.
    */
    mWifiConnectivityManager = new WifiConnectivityManager(
        mContext, mScoringParams, mWifiConfigManager,
        mWifiNetworkSuggestionsManager, mWifiNetworkSelector,
        mWifiConnectivityHelper, mWifiLastResortWatchdog, mOpenNetworkNotifier,
        mWifiMetrics, wifiHandler,
        mClock, mConnectivityLocalLog, mWifiScoreCard, mWifiBlocklistMonitor,
        mWifiChannelUtilizationScan, mPasspointManager, mMultiInternetManager,
        mDeviceConfigFacade, mActiveModeWarden, mFrameworkFacade, mWifiGlobals,
        mExternalPnoScanRequestManager, mSsidTranslator, mWifiPermissionsUtil,
        mWifiCarrierInfoManager, mCountryCode, mWifiDialogManager);
    mMboOceController = new MboOceController(makeTelephonyManager(), mActiveModeWarden,
        mWifiThreadRunner);
    mConnectionFailureNotifier = new ConnectionFailureNotifier(
        mContext, mFrameworkFacade, mWifiConfigManager,
        mWifiConnectivityManager, wifiHandler,
        mWifiNotificationManager, mConnectionFailureNotificationBuilder,
        mWifiDialogManager);
    mWifiNetworkFactory = new WifiNetworkFactory(
        wifiLooper, mContext, REGULAR_NETWORK_CAPABILITIES_FILTER,
        (ActivityManager) mContext.getSystemService(Context.ACTIVITY_SERVICE),
        (AlarmManager) mContext.getSystemService(Context.ALARM_SERVICE),
        (AppOpsManager) mContext.getSystemService(Context.APP_OPS_SERVICE),
        mClock, this, mWifiConnectivityManager, mWifiConfigManager,
        mWifiConfigStore, mWifiPermissionsUtil, mWifiMetrics, mWifiNative,
        mActiveModeWarden, mConnectHelper, mCmiMonitor, mFrameworkFacade,
        mMultiInternetManager);
    // We can't filter untrusted network in the capabilities filter because a trusted
    // network would still satisfy a request that accepts untrusted ones.
    // We need a second network factory for untrusted network requests because we need a
    // different score filter for these requests.
    mUntrustedWifiNetworkFactory = new UntrustedWifiNetworkFactory(
        wifiLooper, mContext, REGULAR_NETWORK_CAPABILITIES_FILTER,
        mWifiConnectivityManager);
    mOemWifiNetworkFactory = new OemWifiNetworkFactory(
        wifiLooper, mContext, OEM_NETWORK_CAPABILITIES_FILTER,
        mWifiConnectivityManager);
    mRestrictedWifiNetworkFactory = new RestrictedWifiNetworkFactory(
        wifiLooper, mContext, RESTRICTED_NETWORK_CAPABILITIES_FILTER,
        mWifiConnectivityManager);
    mMultiInternetWifiNetworkFactory = new MultiInternetWifiNetworkFactory(
        wifiLooper, mContext, REGULAR_NETWORK_CAPABILITIES_FILTER,
        mFrameworkFacade, mContext.getSystemService(AlarmManager.class),
        mWifiPermissionsUtil, mMultiInternetManager, mWifiConnectivityManager,
        mConnectivityLocalLog);
    mWifiScanAlwaysAvailableSettingsCompatibility =
        new WifiScanAlwaysAvailableSettingsCompatibility(mContext, wifiHandler,
        mSettingsStore, mActiveModeWarden, mFrameworkFacade);
    mWifiApConfigStore = new WifiApConfigStore(
        mContext, this, wifiHandler, mBackupManagerProxy,
        mWifiConfigStore, mWifiConfigManager, mActiveModeWarden, mWifiMetrics);
    WakeupNotificationFactory wakeupNotificationFactory =
        new WakeupNotificationFactory(mContext, mFrameworkFacade);
    WakeupOnboarding wakeupOnboarding = new WakeupOnboarding(mContext, mWifiConfigManager,
        wifiHandler, mFrameworkFacade, wakeupNotificationFactory, mWifiNotificationManager);
    mWakeupController = new WakeupController(mContext, wifiHandler,
        new WakeupLock(mWifiConfigManager, mWifiMetrics.getWakeupMetrics(), mClock),
        new WakeupEvaluator(mScoringParams), wakeupOnboarding, mWifiConfigManager,
        mWifiConfigStore, mWifiNetworkSuggestionsManager, mWifiMetrics.getWakeupMetrics(),
        this, mFrameworkFacade, mClock, mActiveModeWarden);
    mLockManager = new WifiLockManager(mContext, mBatteryStats, mActiveModeWarden,
        mFrameworkFacade, wifiHandler, mClock, mWifiMetrics, mDeviceConfigFacade,
        mWifiPermissionsUtil);
    mSelfRecovery = new SelfRecovery(mContext, mActiveModeWarden, mClock, mWifiNative,
        mWifiGlobals);
    mWifiMulticastLockManager = new WifiMulticastLockManager(mActiveModeWarden, mBatteryStats,
        wifiLooper);
    mApplicationQosPolicyRequestHandler = new ApplicationQosPolicyRequestHandler(
        mActiveModeWarden, mWifiNative, mWifiHandlerThread, mDeviceConfigFacade, mContext);
    // Register the various network Nominators with the network selector.
    mWifiNetworkSelector.registerNetworkNominator(mSavedNetworkNominator);
    mWifiNetworkSelector.registerNetworkNominator(mNetworkSuggestionNominator);
    mSimRequiredNotifier = new SimRequiredNotifier(mContext, mFrameworkFacade,
        mWifiNotificationManager);
    mWifiPulledAtomLogger = new WifiPulledAtomLogger(
        mContext.getSystemService(StatsManager.class), wifiHandler,
        mContext);
}

WifiServiceImpl
WifiServiceImpl可以看到很多都是从wifiInjector里面获取参数。而WifiServiceImpl是WifiManager接口的具体实现。

public WifiServiceImpl(WifiContext context, WifiInjector wifiInjector) {
    mContext = context;
    mWifiInjector = wifiInjector;
    mClock = wifiInjector.getClock();

    mFacade = mWifiInjector.getFrameworkFacade();
    mWifiMetrics = mWifiInjector.getWifiMetrics();
    mWifiTrafficPoller = mWifiInjector.getWifiTrafficPoller();
    mUserManager = mWifiInjector.getUserManager();
    mCountryCode = mWifiInjector.getWifiCountryCode();
    mActiveModeWarden = mWifiInjector.getActiveModeWarden();
    mScanRequestProxy = mWifiInjector.getScanRequestProxy();
    mSettingsStore = mWifiInjector.getWifiSettingsStore();
    mPowerManager = mContext.getSystemService(PowerManager.class);
    mAppOps = (AppOpsManager) mContext.getSystemService(Context.APP_OPS_SERVICE);
    mWifiLockManager = mWifiInjector.getWifiLockManager();
    mWifiMulticastLockManager = mWifiInjector.getWifiMulticastLockManager();
    mWifiBackupRestore = mWifiInjector.getWifiBackupRestore();
    mSoftApBackupRestore = mWifiInjector.getSoftApBackupRestore();
    mWifiApConfigStore = mWifiInjector.getWifiApConfigStore();
    mWifiPermissionsUtil = mWifiInjector.getWifiPermissionsUtil();
    mLog = mWifiInjector.makeLog(TAG);
    mFrameworkFacade = wifiInjector.getFrameworkFacade();
    mTetheredSoftApTracker = new TetheredSoftApTracker();
    mActiveModeWarden.registerSoftApCallback(mTetheredSoftApTracker);
    mLohsSoftApTracker = new LohsSoftApTracker();
    mActiveModeWarden.registerLohsCallback(mLohsSoftApTracker);
    mWifiNetworkSuggestionsManager = mWifiInjector.getWifiNetworkSuggestionsManager();
    mWifiNetworkFactory = mWifiInjector.getWifiNetworkFactory();
    mDppManager = mWifiInjector.getDppManager();
    mWifiThreadRunner = mWifiInjector.getWifiThreadRunner();
    mWifiHandlerThread = mWifiInjector.getWifiHandlerThread();
    mWifiConfigManager = mWifiInjector.getWifiConfigManager();
    mHalDeviceManager = mWifiInjector.getHalDeviceManager();
    mWifiBlocklistMonitor = mWifiInjector.getWifiBlocklistMonitor();
    mPasspointManager = mWifiInjector.getPasspointManager();
    mWifiScoreCard = mWifiInjector.getWifiScoreCard();
    mWifiHealthMonitor = wifiInjector.getWifiHealthMonitor();
    mMemoryStoreImpl = new MemoryStoreImpl(mContext, mWifiInjector,
        mWifiScoreCard,  mWifiHealthMonitor);
    mWifiConnectivityManager = wifiInjector.getWifiConnectivityManager();
    mWifiDataStall = wifiInjector.getWifiDataStall();
    mWifiNative = wifiInjector.getWifiNative();
    mCoexManager = wifiInjector.getCoexManager();
    mConnectHelper = wifiInjector.getConnectHelper();
    mWifiGlobals = wifiInjector.getWifiGlobals();
    mSimRequiredNotifier = wifiInjector.getSimRequiredNotifier();
    mWifiCarrierInfoManager = wifiInjector.getWifiCarrierInfoManager();
    mWifiPseudonymManager = wifiInjector.getWifiPseudonymManager();
    mMakeBeforeBreakManager = mWifiInjector.getMakeBeforeBreakManager();
    mLastCallerInfoManager = mWifiInjector.getLastCallerInfoManager();
    mWifiDialogManager = mWifiInjector.getWifiDialogManager();
    mBuildProperties = mWifiInjector.getBuildProperties();
    mDefaultClientModeManager = mWifiInjector.getDefaultClientModeManager();
    mCountryCodeTracker = new CountryCodeTracker();
    mWifiTetheringDisallowed = false;
    mMultiInternetManager = mWifiInjector.getMultiInternetManager();
    mDeviceConfigFacade = mWifiInjector.getDeviceConfigFacade();
    mApplicationQosPolicyRequestHandler = mWifiInjector.getApplicationQosPolicyRequestHandler();
    mWifiPulledAtomLogger = mWifiInjector.getWifiPulledAtomLogger();
}

这里就结束了

  • 6
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值