默认情况下当屏幕被关掉以后,如果没有应用程序在使用WiFi,WiFi会在2分钟后进入睡眠状态。这主要是为防止频繁地改变WiFi的电源模式。
1、介绍
WifiLock允许一个应用无线网络广播,以保持清醒。通常情况下,无线网络广播可以关掉时,该用户使用该设备在一段时间。将获得WifiLock收音机直到锁释放。WifiLocks多个应用程序可能持有,电台只允许在关掉时没有WifiLocks被保留在任何应用程序。
在使用WifiLock,仔细考虑一下如果你的应用要求,或能提供无线上网服务的功能在一个移动网络,如果有的话。一个程序,需要下载大文件都应确保WifiLock下载将完成,但是程序或者是偶尔的网络应用不应持有一个WifiLock端口避免影响电池的寿命。
注意,WifiLocks用户级”不能凌驾了无线保真技术使能”设置,也没有飞机模式。他们从简单的把收音机关掉无线保真技术已经在时但装置是无用的。
2、API
android.NET.wifi.WifiManager WifiLock api实现。
2.1获得
直到锁定无线网络电台的释放是打电话来了。
如果这WifiLock,每个电话是reference-counted获得将增加叁考计数,电台将永远被困只要叁考计数是零度以上。
如果这不是reference-counted WifiLock,第一个电话获取锁收音机,但是随后的电话将被忽略。只有一个叫释放将被要求,无论多少次,获得被称为。
2.2释放
开启了无线保真技术广播,允许它关掉时,该装置是无用的。
如果这WifiLock,每个电话是reference-counted释放会递减叁考计数,电台将会开启只有当叁考计数达到零。如果叁考计数下面去了零(即,如果释放被称为一个更大的次数比获得),唯一的例外就是丢出。
如果这不是reference-counted WifiLock,第一次叫牌后释放
java代码:
- import android.os.PowerManager;
- import android.net.wifi.WifiManager;
-
- public class WifiLockExample{
- private final Context mContext;
- private PowerManager.WakeLock mWakeLock = null;
- private WifiManager.WifiLock mWifiLock = null;
- public WifiLockExample(Context context){
- mContext = context;
- PowerManager powerManager = (PowerManager)
- mContext.getSystemService(Context.POWER_SERVICE);
- mWakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, WAKELOCK_KEY);
- mWakeLock.setReferenceCounted(true);
-
- WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
- mWifiLock = wifiManager.createWifiLock(WIFILOCK_KEY);
- mWifiLock.setReferenceCounted(true);
- }
-
- private void acquire(){
- mWakeLock.acquire();
- mWifiLock.acquire();
- }
-
- private void release(){
- mWifiLock.release();
- mWakeLock.release();
- }
- }