public class WifiManager.MulticastLock
extends Object
java.lang.Object | |
↳ | android.net.wifi.WifiManager.MulticastLock |
允许应用程序接收Wifi多播数据包。 通常情况下,Wifi堆栈会过滤掉未明确指定给此设备的数据包。 调用MulticastLock将导致堆栈接收发往多播地址的数据包。 处理这些额外的数据包可能会导致一个明显的电池消耗,并应在不需要时禁用。
Public methods |
|
---|---|
void |
acquire() 锁定Wifi多点传送直到 |
boolean |
isHeld() 检查这个MulticastLock是否被保持。 |
void |
release() 解锁Wifi多点传送,恢复未针对此设备寻址的数据包过滤器并节省电量。 |
void |
setReferenceCounted(boolean refCounted) 控制这是一个引用计数还是非引用计数的MulticastLock。 |
String |
toString() 返回对象的字符串表示形式。 |
Protected methods |
|
---|---|
void |
finalize() 当垃圾收集确定没有更多对该对象的引用时,由对象上的垃圾回收器调用。 |
Inherited methods |
|
---|---|
From class java.lang.Object
|
void acquire ()
锁定Wifi多点传送直到release()
被调用。 如果这个MulticastLock被引用计数,每次调用acquire
都会增加引用计数,只要引用计数大于零,wifi接口就会接收到多播数据包。 如果此MulticastLock未被引用计数,则首次调用acquire
将打开多播数据包,但随后的调用将被忽略。 不管调用release()
的次数, acquire
需要调用acquire
。 请注意,其他应用程序也可能会锁定Wifi多点传送。 只有他们可以放弃他们的锁定。 另请注意,应用程序无法保持多播被锁定。 当应用程序退出或崩溃时,任何多播锁都将被释放。
boolean isHeld ()
检查这个MulticastLock是否被保持。
Returns | |
---|---|
boolean |
true if this MulticastLock is held, false otherwise |
void release ()
解锁Wifi多点传送,恢复未针对此设备寻址的数据包过滤器并节省电量。 如果此MulticastLock是参考计数的,则每次调用release
都会减少引用计数,并且只有当引用计数达到零时才会停止接收多播数据包。 如果引用计数低于零(也就是说,如果release
被称为比acquire()
更多的次数),则抛出异常。 如果这个MulticastLock没有被引用计数,那么第一次调用release
(在无线电使用acquire()
进行多播锁定acquire()
)将会解锁多播,随后的调用将被忽略。 请注意,如果任何其他Wifi多点传送锁仍然未完成,此release
呼叫不会立即生效。 只有当所有的应用程序都释放了所有的组播锁定后,组播过滤器才会重新打开。 另请注意,当应用程序退出或崩溃时,其所有多点传送锁将自动释放。
void setReferenceCounted (boolean refCounted)
控制这是一个引用计数还是非引用计数的MulticastLock。 引用计数MulticastLocks跟踪电话的数量来acquire()
和release()
,只有当每一个呼叫阻止多播数据包的接收acquire()
已与对通话平衡release()
。 非参比计数MulticastLocks允许多播数据包的接收每当acquire()
被调用,并停止接受的多播包每当release()
被调用。
Parameters | |
---|---|
refCounted |
boolean : true if this MulticastLock 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 |