我的(Android)应用需要网络扫描功能。
我想给它一个子网,我希望它向子网上的每个可能的地址发送请求,并确定它是否响应。
我有两个班级:
设备,包含地址和属性available
(bool)(可以通过方法checkAvailable
设置)。
NetworkerScanner,它扩展Thread
并实例化所有Device
。
最后,我计划让一个对象成为Observable集合的观察者,该集合将包含所有可用的设备。
将可用设备添加到集合中并不明显。
算法
Let col be a Observable Collection
For each possible address
Instantiate a corresponding Device
On a new, separate thread, get this new device's availability.
If it's available, then add it to col.
检查设备的可用性不是立竿见影的(我正在使用Volley,它使用回调)。
如何从HTTP请求回调中将设备添加到集合中?
我有几点想法:
在实例化时将对集合的引用传递给设备,这似乎是一个坏主意,因为集合没有理由成为设备的属性。更重要的是,如果我想在同一Device
个实例上运行多次扫描,那么它将不再起作用,因为Device
只能有一个集合。
我也可以将对集合的引用传递给checkAvailable
方法,但我觉得这是一个技巧(以及错误类型的技巧)。
调用checkAvailable
时,将对onResponseListener
(HTTP请求的回调方法)的引用传递给它。因为我会在我的NetworkScanner
中创建监听器,所以我可以捕获本地集合。但我觉得这是错的。喜欢......非常错误。
请建议。