365不让提款-日博365bet体育在线-网上365体育买球波胆提现

深度阅读体验

365不让提款

Android Wi-Fi扫描机制(Android P)

Android P的扫描场景可以归结为以下四种:1、 亮屏情况下,在Wifi settings界面,固定扫描,时间间隔为10s。 2、 亮屏情况下,非Wifi settings界面,二

Android Wi-Fi扫描机制(Android P)

Android P的扫描场景可以归结为以下四种:1、 亮屏情况下,在Wifi settings界面,固定扫描,时间间隔为10s。

2、 亮屏情况下,非Wifi settings界面,二进制指数退避扫描,退避:interval*(2^n), 最小间隔min=20s, 最大间隔max=160s.

3、 灭屏情况下,有保存网络时,若已连接,不扫描,否则,PNO扫描,即只扫描已保存的网络。最小间隔min=20s,最大间隔max=20s*3=60s

4、 无保存网络情况下,固定扫描,间隔为5分钟,用于通知用户周围存在可用开放网络。

正常扫描流程可以看我之前写的: wifi扫描流程梳理

1、 亮屏情况下,在Wifi settings界面,固定扫描,时间间隔为10s。

从 wifi扫描流程梳理 可以看到wifi扫描流程会走到WifiTracker的handleMessage函数中,我们看sendEmptyMessageDelayed,会发送一条扫描的信息,其中包含了WIFI_RESCAN_INTERVAL_MS,WIFI_RESCAN_INTERVAL_MS就是默认的扫描周期,可以看到系统设置的默认周期是10 * 1000,也就是10秒。

WifiTracker.java

代码语言:javascript复制private static final int WIFI_RESCAN_INTERVAL_MS = 10 * 1000;代码语言:javascript复制public void handleMessage(Message message) {

if (message.what != MSG_SCAN) return;

if (mWifiManager.startScan()) {

mRetry = 0;

} else if (++mRetry >= 3) {

mRetry = 0;

if (mContext != null) {

Toast.makeText(mContext, R.string.wifi_fail_to_scan, Toast.LENGTH_LONG).show();

}

return;

}

sendEmptyMessageDelayed(MSG_SCAN, WIFI_RESCAN_INTERVAL_MS);

}2、 亮屏情况下,非Wifi settings界面,二进制指数退避扫描,退避:interval*(2^n), 最小间隔min=20s, 最大间隔max=160s.

WifiConnectivityManager.java

startConnectivityScan --> startPeriodicScan --> startPeriodicSingleScan代码语言:javascript复制private void startConnectivityScan(boolean scanImmediately) {

// Always stop outstanding connecivity scan if there is any

stopConnectivityScan();

if (mWifiState != WIFI_STATE_CONNECTED && mWifiState != WIFI_STATE_DISCONNECTED) {

return;

}

if (mScreenOn) {

startPeriodicScan(scanImmediately);

} else {

if (mWifiState == WIFI_STATE_DISCONNECTED && !mPnoScanStarted) {

startDisconnectedPnoScan();

}

}

}代码语言:javascript复制private void startPeriodicScan(boolean scanImmediately) {

mPnoScanListener.resetLowRssiNetworkRetryDelay();

if (scanImmediately) {

resetLastPeriodicSingleScanTimeStamp();

}

mPeriodicSingleScanInterval = PERIODIC_SCAN_INTERVAL_MS;

startPeriodicSingleScan();

}代码语言:javascript复制// Start a single scan and set up the interval for next single scan.

private void startPeriodicSingleScan() {

long currentTimeStamp = mClock.getElapsedSinceBootMillis();

if (mLastPeriodicSingleScanTimeStamp != RESET_TIME_STAMP) {

long msSinceLastScan = currentTimeStamp - mLastPeriodicSingleScanTimeStamp;

if (msSinceLastScan < PERIODIC_SCAN_INTERVAL_MS) {

localLog("Last periodic single scan started " + msSinceLastScan

+ "ms ago, defer this new scan request.");

schedulePeriodicScanTimer(PERIODIC_SCAN_INTERVAL_MS - (int) msSinceLastScan);

return;

}

...............

if (isScanNeeded) {

mLastPeriodicSingleScanTimeStamp = currentTimeStamp;

startSingleScan(isFullBandScan, WIFI_WORK_SOURCE);

schedulePeriodicScanTimer(mPeriodicSingleScanInterval);

// Set up the next scan interval in an exponential backoff fashion.

mPeriodicSingleScanInterval *= 2;

if (mPeriodicSingleScanInterval > MAX_PERIODIC_SCAN_INTERVAL_MS) {

mPeriodicSingleScanInterval = MAX_PERIODIC_SCAN_INTERVAL_MS;

}

} else {

// Since we already skipped this scan, keep the same scan interval for next scan.

schedulePeriodicScanTimer(mPeriodicSingleScanInterval);

}

}对扫描间隔的设置

代码语言:javascript复制 // Periodic scan interval in milli-seconds. This is the scan

// performed when screen is on.

public static final int PERIODIC_SCAN_INTERVAL_MS = 20 * 1000; // 20 seconds

// When screen is on and WiFi traffic is heavy, exponential backoff

// connectivity scans are scheduled. This constant defines the maximum

// scan interval in this scenario.

@VisibleForTesting

public static final int MAX_PERIODIC_SCAN_INTERVAL_MS = 160 * 1000; // 160 seconds3、 灭屏情况下,有保存网络时,若已连接,不扫描,否则,PNO扫描,即只扫描已保存的网络。最小间隔min=20s,最大间隔max=20s*3=60s

Android P Wi-Fi PNO扫描流程

4、 无保存网络情况下,固定扫描,间隔为5分钟,用于通知用户周围存在可用开放网络。(注:第四种情况属于Android O的逻辑,因为在P的代码里还没有找到关于这个扫描的代码,也可能取消了)

WifiStateMachine.java

代码语言:javascript复制class DisconnectedState extends State {

@Override

public void enter() {

Log.i(TAG, "disconnectedstate enter");

// We dont scan frequently if this is a temporary disconnect

// due to p2p

if (mTemporarilyDisconnectWifi) {

p2pSendMessage(WifiP2pServiceImpl.DISCONNECT_WIFI_RESPONSE);

return;

}

/** clear the roaming state, if we were roaming, we failed */

mIsAutoRoaming = false;

mWifiConnectivityManager.handleConnectionStateChanged(

WifiConnectivityManager.WIFI_STATE_DISCONNECTED);

/**

* If we have no networks saved, the supplicant stops doing the periodic scan.

* The scans are useful to notify the user of the presence of an open network.

* Note that these are not wake up scans.

*/

if (mNoNetworksPeriodicScan != 0 && !mP2pConnected.get()

&& mWifiConfigManager.getSavedNetworks().size() == 0) {

sendMessageDelayed(obtainMessage(CMD_NO_NETWORKS_PERIODIC_SCAN,

++mPeriodicScanToken, 0), mNoNetworksPeriodicScan);

}

mDisconnectedTimeStamp = mClock.getWallClockMillis();

mWifiStateTracker.updateState(WifiStateTracker.DISCONNECTED);

}代码语言:javascript复制mNoNetworksPeriodicScan = mContext.getResources().getInteger(

R.integer.config_wifi_no_network_periodic_scan_interval);/frameworks/base/core/res/res/values/config.xml

mNoNetworksPeriodicScan在config.xml中注册,周期为5分钟。

代码语言:javascript复制

300000

相关阅读

365不让提款 菠菜焯水要多久?

菠菜焯水要多久?

菠菜,这道餐桌上常见的绿叶蔬菜,以其丰富的营养价值而备受青睐。然而,菠菜中含有一定量的草酸,这种物质会影响人体对钙和铁的吸收。