Category Archives: Mobile Dev

Android与OAuth: 用户在哪授权? (还没研究透)

OAuth之所以适合三方协作,就是因为用户不需要在第三方系统里直接用户名/密码;而是在OPEN ID提供者的系统里输入,然后再跳到第三方系统。 在B/S环境下,OAuth通过浏览器跳来跳去完成这种事;但Android这种C/S环境下,怎么搞? 我初略地做了些研究,得出的结论是大概有几种方式: 1. 新浪微博的OAUTH2: 第三方应用通过web view或者什么方式弹出浏览器,让用户在一个很小的新浪授权页中输入用户名/密码,然后回到第三方应用。 2. 新浪微博的SSO: 第三方应用通过Intent启动本机中安装的微博Android应用,选择用户后回到第三方应用。 严格地说,这可能已经不是OAUTH了。 (我写这篇文章时weibo客户端的SDK没有源码,所以我无法深入研究,给出答案) 3. Google的AccoutManager.getAuth(): 第三方应用调用AccountManager.getAuth()时,Android会 启动AccountManager自带的一个Activity让用户决定是否授权( 原文:During the AccountManager.getAuthToken() call the AccountManager will check if your application has been authorized to access the Tasks API. If your application has not yet been authorized an Activity is started by the AccountManager which displays an authorization […]

大屏、小屏、横屏与无线UI布局的关系

UI的布局只是指界面组件之间的相对位置,而跟组件的大小及长宽比例无关。 对于普通的联系人界面,把手机横过来,你会看到组件变得扁平了,但这时布局没有变。 对于小屏(phone)变大屏(pad),如果程序没做特殊设置的话,布局也不会变。 如果两个组件在竖屏是垂直排列,在横屏时变成水平排列,这才叫自适应布局。 这种东西一般要写程序的人做好支持,比如在安卓里写两个layout文件,res/layout/*.xml代表竖屏的布局,res/layout-land/*.xml代表横屏的布局。 大小屏与此类似,如果要搞自适应布局,在安卓里也要写多个布局文件。

长连接要尽量维持

既然服务端跟客户端使用了长连接通信,就要尽量维持这个长连接,因为建立连接比较慢;服务端一般会用数据库、缓存什么的来维护长连接,所以重建连接对服务端的开销也有影响。 IOS应用被挪到后台时,服务端不应该再发数据,因为即使发了应用也不会处理;那怎么告诉服务端说不能再发数据了? 粗暴的作法是IOS应用进入后台时立即关断长连接。 但这种做法在一种情况下不利:应用进入后台后可能又会很快被用户切回前台,这时又得重建长连接,用户体验会很差。 合适的作法是应用进入后台时发个报文给服务端,让它暂停发送;恢复到前台时再发个报文,让服务端恢复发送。

无线开发使用长连接的目的

PC用长连接可以减少频繁建立连接的时间,提高响应速度。 但我们在PC上平时用短连接访问网站时,性能上也完全能接受;手机用短连接访问网站,照样也能接受吧? 是的。 但无线开发用长连接不仅仅是为了提高响应速度,更多地是为了节省流量、省电。使用长连接可以减少很多网络传输。