Android开发笔记(八)
-- 组播与SQLite存储
- Android程序利用组播收发数据
> 实现功能:
多台Android设备之间,或与PC、笔记本等设备,存在相同的WLAN环境的前提下,不同设备之间彼此收发数据,相互发现。
> 网络环境:
在相同的WLAN环境下。包括:相同BSSID的WIFI,或同SSID不同BSSID但可以直连。
且所处的WLAN允许转发UDP数据包,因为组播是建立在UDP协议基础上的。
> 组播流程:
1. 创建一个组播Socket(MulticastSocket in Java)绑定固定的端口。这里可以设置Socket属性,如setLoopbackMode是否禁用收到本机的组播(环回)消息。
2. 将该Socket加入到指定的组播IP地址,关于组播地址的说明可参考百度百科。
224.0.0.0~224.0.0.255为预留的组播地址(永久组地址),地址224.0.0.0保留不做分配,其它地址供路由协议使用;224.0.1.0~224.0.1.255是公用组播地址,可以用于Internet;224.0.2.0~238.255.255.255为用户可用的组播地址(临时组地址),全网范围内有效;239.0.0.0~239.255.255.255为本地管理组播地址,仅在特定的本地范围内有效。
3. 可以正常发送或接收组播消息。另外在发送接收之前设置Socket超时时间setSoTimeout。
PS. 可以说Java SDK把组播功能封装在MulticastSocket,使用起来相当的简便的,完全谈不上难度。
注意:
a,收发组播数据包时候,建议最好先发组播数据,再接收组播数据。这样比较好,因为发出去数据包了,尽快保证其他设备可以收到数据包。
b,不同设备间设置的组播地址及端口都应该保持一致,才可能彼此收发对方的组播数据。
> 示例程序
简单的测试示例代码参见Github。
- Android程序Sqlite存储数据应用
> 模块设计
a 封装android.database.sqlite API;
class SQLiteOpenHelperImpl,继承基类SQLiteOpenHelper。提供的功能主要包括:
1,创建所需的SQLite数据库(*.db),同时负责创建数据表。
2,对外提供只读或读写的SQLiteDatabase对象。
3,关闭数据库。
在什么时候创建表呢?当然了若表已存在则不必创建, SQL语句如“CREATE TABLE table_name IF NOT EXIST ……”,几个地方可能需要考虑创建数据表的,包括 onCreate或onOpen或getReadableDatabase或getWritableDatabase。
class SQLiteManager.
主要管理SQLiteOpenHelperImpl或SQLiteDatabase对象,为配合业务逻辑做一些功能实现。
b 接口实现层
class LogicModuleImplement
即实现如下接口,更加面对业务需求的功能实现,要放在该类型完成。
c 接口层
class LogicModuleInterface
提供对外使用的接口,具体定义内容根据不同项目的业务需求而定。
PS:以上简单描述模块设计源自个人项目开发的总结,可能完全不适合你,或全是错的。若可帮到当然最乐意了!
Android中SQLite应用详解该链接的内容关于Android的SQLite应用讲解的很详细,有需要的同学不妨认真参考一下。
(完)
没有评论:
发表评论