代码改变世界

新浪微博开放平台开发-android客户端(2)

2011-08-04 19:03  Virus-BeautyCode  阅读(2162)  评论(1编辑  收藏  举报

引言

最近不是太忙,花了一些时间学习android的应用开发。经过两个星期的学习,学习的同时还写了很多的demo示例,可以从基本控件及基本动画效果等示例demo集合大放送,持续更新下载。

从这个星期开始,准备拿新浪微博开放平台做个实践,开发一个功能简单的android客户端,会尽可能的完善功能。

今天的内容

sinaweibo3

上图是这个客户端的主要界面。今天增加的功能。

  1. 发布微博。
  2. 更多微博。

运行的系统是android2.2.

使用到的技术点包括ListView,自定义ListAdapter,多线程相关的Message,Handler,验证相关的OAuth,用户图片的异步加载。

新浪微博的验证使用的是signpost的OAuth组件,没有使用微博的SDK。

源码下载:

SinaWeibo2

源码下载之后,将后缀改为rar,使用压缩软件解压即可。

Activity生命周期

关于activity的生命周期,越来越感觉很重要。activity的生命周期有点像asp.net中page的生命周期,经历好几个过程。重写不同的阶段,可以完成不同的功能和效果。先上一张经典的生命周期图。

activity_lifecycle

学习生命周期的过程中,在网上找到很多的教程,中文的、英文的,有很多很多。推荐三篇文章,下面的三篇应该是写的不错:

  1. 两分钟彻底让你明白Android Activity生命周期(图文)!
  2. http://developers.androidcn.com/reference/android/app/Activity.html
  3. Android开发之旅:组件生命周期(一)

注意点:

  1. 新建显示一个activity,会经历create->start->resume三个阶段。
  2. 点击HOME键,会经历pause->stop两个阶段。
  3. 点击BACK键和代码调用finish,会经历pause->stop->destroy三个阶段。
  4. 如果把一个activity设置为dialog形式,显示这个activity的时候,原来的activity会经历pause一个阶段,就是藏到后面了。
  1. 一个activity从pause状态激活的话,直接恢复到resume。
  2. 一个activity从stop状态激活的话,会经历restart->start->resume三个阶段。
  3. 一个activity如果被destroy了,激活它的话,就是新建显示了,会经历create->start->resume三个阶段。
  4. 从A跳转到B,先把A至于pause状态,然后去激活B,激活完毕之后,在stopB,甚至是destroyB。

更多功能

接下来可能会支持的功能:

  • 上下文菜单,删除,添加关注,取消关注,查看某个用户的微博等等。
  • 发表博文支持图片。
  • UI的美化,性能的优化。

总结

学习的过程中看过两本书,Pro.Android.2.pdf和Professional.Android.2.Application.Development.(Wrox,.2010,.0470565527).pdf,都是很不错的入门书籍。书我没有全看完,看完大部分吧,边看边写demo。

同时每天泡论坛http://www.eoeandroid.com/forum.php,eoe的开发者门户。回答问题,解决问题,提出问题,发帖子,总之就是锻炼自己,强迫自己锻炼基础和思考。

在论坛上,有很多的中文pdf教程,但是发现大多都是翻译android developer center的Dev Guide和Resources中的内容。所以觉得,如果英文不是很差,建议直接阅读上面的两个板块,同时练习其中的示例,保证两个星期,你会有很大的进步。

参考资料

http://developer.android.com/index.html
http://www.cnblogs.com/hll2008/archive/2011/01/03/1923674.html
http://open.weibo.com/wiki/Oauth
http://blog.csdn.net/lihenair/article/details/6010026
http://www.cnblogs.com/liangxing/archive/2010/10/19/1855938.html
http://code.google.com/p/oauth-signpost/wiki/GettingStarted