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


    程序的运行流程:

    IWeiboActivity接口:

    1.  init()方法

     完成初始化

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

     完成窗体刷新

    Task任务类:

    定义程序中的任务

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

    int taskId//当前任务的ID

    Map params //当前任务的参数

    MainService(核心控制类)

    1. MainService的主要功能

    完成程序调度

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

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

    线程(实现Runnable接口)

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

    2. MainService流程图预览

    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;
  • 相关阅读:
    +1和*2
    线段树(区间最大值和最大值的个数)
    CodeForces
    莫队算法入门(暴力而不失优雅)
    二分迷宫
    全错排公式
    C++ PAT乙 1051. 复数乘法 (15)
    C++ PAT乙 1070. 结绳(25)
    C++ PAT乙 1080. MOOC期终成绩 (25)
    C++ PAT 1073. 多选题常见计分法(20)
  • 原文地址:https://www.cnblogs.com/xiaochao1234/p/3764826.html
Copyright © 2020-2023  润新知