码迷,mamicode.com
首页 > 其他好文 > 详细

新浪微博客户端项目之项目主体结构详解

时间:2014-06-14 22:28:24      阅读:386      评论:0      收藏:0      [点我收藏+]

标签:android   code   http   get   数据      

程序的运行流程:

bubuko.com,布布扣

 

 

 

 

IWeiboActivity接口:

 

1.  init()方法

 完成初始化

2,  refresh(Objet ...args)方法

 完成窗体刷新

 

Task任务类:

定义程序中的任务

如:登录,发表新微博,获取用户微博,获取用户详细信息等各种任务

int taskId//当前任务的ID

Map params //当前任务的参数

 

bubuko.com,布布扣

 

 

 

MainService(核心控制类)

 

1. MainService的主要功能

完成程序调度

接收UI层数据(任务),完成业务逻辑,返回信息,更新UI

在后台运行(继承自Service类)

线程(实现Runnable接口)

不断侦听UI传过来任务消息

2. MainService流程图预览

 

bubuko.com,布布扣

 

 

1. MainService的核心方法个变量

List<Activity> allActivity

保存当前所有Activity,方便切换

List<Task> allTask

把当前任务加到集合中

然后开启线程在Task中遍历任务 去执行任务

public void run() {

while (isrun) {

Task lastTask = null;

       synchronized (allTask) {//这里有可能同时有多个任务并发 所以要加锁同步

if (allTask.size() > 0) {

lastTask = allTask.get(0);

Log.i("yanzheng", "任务ID" + lastTask.getTaskID());

doTask(lastTask);

}

}

// 每隔一秒钟检查是否有任务

try {

Thread.sleep(1000);

} catch (Exception e) {

}

}



 

当接线程发现任务会调用doTask(Task task)方法去执行任务

Message mess = hand.obtainMessage();

 mess.what = task.getTaskID();//将当前任务的ID 放到Message中

mess.obj = Object object;//讲当前任务执行的结果放到message中

hand.sendMessage(mess);//发送当前消息

allTask.remove(task);//当前任务执行完毕 把任务从任务集合中remove

public void handleMessage(Message msg) 可以接收一个Message对象 (也就是我们doTask中传递的Message)

switch (msg.what) {

case Task.TASK_GET_USER_HOMETIMEINLINE://任务ID

 //因为当前HomeActivity实现了IWeiboActivity这个接口,我们得到当前activity的实例,并调用它实现的刷新方法,同时讲参数传递过去,这里就实现了Service中刷新数据的方法了!

IWeiboActivity ia = (IWeiboActivity) MainService.getActivityByName("HomeActivity");

ia.refresh(HomeActivity.REFRESH_WEIBO, msg.obj);

break;

新浪微博客户端项目之项目主体结构详解,布布扣,bubuko.com

新浪微博客户端项目之项目主体结构详解

标签:android   code   http   get   数据      

原文地址:http://www.cnblogs.com/xiaochao1234/p/3764826.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!