public class WifiManager.WifiLock
extends Object
java.lang.Object | |
↳ | android.net.wifi.WifiManager.WifiLock |
允许应用程序保持Wi-Fi无线电唤醒。 通常,当用户长时间没有使用该设备时,Wi-Fi无线电可能会关闭。 获取WifiLock将使收音机保持工作状态,直到锁定释放。 多个应用程序可能持有WifiLocks,并且只有在任何应用程序中没有持有WifiLocks时才允许关闭收音机。
在使用WifiLock之前,请仔细考虑您的应用程序是否需要Wi-Fi访问,或者可以通过移动网络(如果可用)运行。 一个需要下载大文件的程序应该有一个WifiLock来确保下载完成,但是一个程序的网络使用偶尔或者低带宽不应该包含WifiLock,以避免对电池寿命产生不利影响。
请注意,WifiLocks无法覆盖用户级别的“已启用Wi-Fi”设置以及飞行模式。 当Wi-Fi已经打开但设备闲置时,它们只会使收音机不能关闭。
任何使用WifiLock的应用程序都必须请求应用程序清单的 <uses-permission>
元素中的 android.permission.WAKE_LOCK
权限。
Public methods |
|
---|---|
void |
acquire() 锁定Wi-Fi无线电直到 |
boolean |
isHeld() 检查此WifiLock是否当前处于保持状态。 |
void |
release() 解锁Wi-Fi无线电,使其在设备空闲时关闭。 |
void |
setReferenceCounted(boolean refCounted) 控制这是一个参考计数还是非参考计数WifiLock。 |
void |
setWorkSource(WorkSource ws) |
String |
toString() 返回对象的字符串表示形式。 |
Protected methods |
|
---|---|
void |
finalize() 当垃圾收集确定没有更多对该对象的引用时,由对象上的垃圾回收器调用。 |
Inherited methods |
|
---|---|
From class java.lang.Object
|
void acquire ()
锁定Wi-Fi无线电直到release()
被调用。 如果这个WifiLock是引用计数,每次调用acquire
都会增加引用计数,并且只要引用计数大于零,收音机就会保持锁定状态。 如果此Wifi锁定未被引用计数,则第一次拨打acquire
将锁定收音机,但后续呼叫将被忽略。 只有一个呼叫release()
将被要求,无论次数是acquire
被调用。
boolean isHeld ()
检查此WifiLock是否当前处于保持状态。
Returns | |
---|---|
boolean |
true if this WifiLock is held, false otherwise |
void release ()
解锁Wi-Fi无线电,使其在设备空闲时关闭。 如果此WifiLock是参考计数的,则每次调用release
都会减少参考计数,并且仅当参考计数达到零时才会解锁收音机。 如果引用计数低于零(也就是说,如果release
被称为比acquire()
多的次数),则会引发异常。 如果此WifiLock未被引用计数,则第一次拨打release
(在收音机被锁定使用acquire()
)将解锁收音机,并且后续呼叫将被忽略。
void setReferenceCounted (boolean refCounted)
控制这是一个参考计数还是非参考计数WifiLock。 引用计数的WifiLocks记录了拨打acquire()
和release()
的电话数量,并且只有当每次拨打acquire()
的电话与release()
的呼叫进行平衡时,才允许收音机进入睡眠状态。 无参考计数的Wifi锁定无论何时acquire()
并解锁,都会锁定收音机,并在调用release()
并锁定时解锁收音机。
Parameters | |
---|---|
refCounted |
boolean : true if this WifiLock should keep a reference count |
String toString ()
返回对象的字符串表示形式。 通常, toString
方法将返回一个“文本地表示”该对象的字符串。 结果应该是一个简洁但内容丰富的表述,对于一个人来说很容易阅读。 建议所有子类重写此方法。
类Object
的toString
方法返回一个字符串,其中包含对象为实例的类的名称,符号字符“ @
”和对象的哈希代码的无符号十六进制表示形式。 换句话说,这个方法返回一个字符串,其值等于:
getClass().getName() + '@' + Integer.toHexString(hashCode())
Returns | |
---|---|
String |
a string representation of the object. |
void finalize ()
当垃圾收集确定没有更多对该对象的引用时,由对象上的垃圾回收器调用。 子类会覆盖finalize
方法来处理系统资源或执行其他清理。
的常规协定finalize
是,它被调用,如果当在Java TM虚拟机已确定不再有由该目的可以通过还没有死亡,除了作为一个动作的结果的任何线程访问的任何手段取决于某些其他可以完成的对象或类别的最终定稿。 finalize
方法可以采取任何行动,包括使这个对象再次可用于其他线程; 然而, finalize
的通常目的是在对象被不可撤销地丢弃之前执行清理操作。 例如,表示输入/输出连接的对象的finalize方法可能会执行显式I / O事务,以在永久丢弃该对象之前中断连接。
类Object
的finalize
方法Object
执行特殊操作; 它只是正常返回。 Object
子类可能会覆盖此定义。
Java编程语言不保证哪个线程将为任何给定对象调用finalize
方法。 但是,保证调用finalize的线程在调用finalize时不会保留任何用户可见的同步锁。 如果finalize方法引发未捕获的异常,则忽略该异常,并终止该对象的终止。
在针对某个对象调用 finalize
方法之后,在Java虚拟机再次确定不再有任何方法可以通过尚未死亡的任何线程访问此对象之前,不会采取进一步的操作,包括可能的操作通过准备完成的其他对象或类别,此时该对象可能被丢弃。
对于任何给定对象,Java虚拟机永远不会多次调用 finalize
方法。
finalize
方法抛出的任何异常 finalize
导致此对象的终止被暂停,但在其他情况下会被忽略。
Throws | |
---|---|
Throwable |