Android实现添加好友功能(前-后端交互)可能出现问题及解决方案
前提(必看):(否则你发现我的问题你完全看不懂!
- 我前后端交互使用的Netty,tcp传输;
- 获取数据继承的SimpleChannelInboundHandler,因为我认为我处理不好数据资源释放问题(so交给继承类来处理);
- 服务端传到客户端数据后通过在上一条继承类的类中实现数据分发到各个activity,并通过Handler传输数据,我认为这样实现了数据的及时性,虽然广播好像也可以,但是我对广播及接口还没有完全弄清楚。
- 通过获取其他ativity的handler来发送Message。
问题:
- A点击添加B之后,B收到服务端转发的好友邀请,点击好友邀请通知后自动弹出并回到登录页面,并断开服务端连接。
问题原因:客户端发送handler时,由于用户从未点击过邀请信息页面,activity未初始化,获取到的handler为null,发送失败,出现错误。
问题解决:通过给获取的handler添加try-catch捕捉异常,并作判空处理,代码思路其实不需要修改,如果在用户页面收到邀请后,邀请信息则更新到数据库,进入邀请页面后获取数据库邀请信息,自然获取到来自服务端转发的邀请。
- A接受好友邀请后,回到用户页面,未更新好友列表。
问题原因:进入用户页面后没有任何通知告诉他要刷新好友列表。
问题解决:A在邀请页面接受邀请后发送刷新好友列表Handler Message给用户页面,用户回到用户页面后成功刷新。
- 添加好友页面,点击一次添加后发送添加好友成功则添加按钮不再具备其添加功能,但是更换查找好友信息时,添加按钮功能也未恢复。
问题原因:未在查找成功后对添加按钮功能设置为true.
问题解决:设置按钮bt.setEnable(true).
- 异步登录获取好友邀请,总是没有成功获取?
问题原因:用户登录后还未进入用户页面就收到好友邀请,由于未初始化handler无法正常传输好友邀请给用户。
问题解决:在传输数据代码中添加循环,若未获取到handler则使用线程修眠2秒,直至进入用户页面(这个方法可能不怎么好,因为我的邀请通知没办法显示,但是邀请信息正常显示)。
- 用户获取其标签时总需要每次都存储到数据库,再从数据库获取。
问题解决:使用static变量存储标签,每次生成后存储到其类中(使用set方法),每次获取使用其类的get方法。