• 新浪微博Android开发(三)


    MainService类,执行流程:

    代码:

    package com.shaccp.logic;

    import java.util.ArrayList;
    import java.util.List;

    import com.shaccp.ui.Home;

    import weibo4andriod.Status;
    import weibo4andriod.User;
    import weibo4andriod.Weibo;
    import weibo4andriod.WeiboException;
    import android.app.Activity;
    import android.app.Service;
    import android.content.Intent;
    import android.os.Handler;
    import android.os.IBinder;
    import android.os.Message;

    publicclass MainService extends Service implements Runnable {

    publicstatic Weibo weibo =new Weibo();
    publicstatic List<Activity> allActivity =new ArrayList<Activity>();
    publicstatic List<Task> allTask =new ArrayList<Task>();

    publicstatic User nowUser;


    publicboolean isrun =true;

    publicstatic Activity getActivityByName(String name){

    for(Activity ac:allActivity){
    if(ac.getClass().getName().indexOf(name)>=0){
    return ac;
    }
    }

    returnnull;
    }

    //启动线程
    @Override
    publicvoid onCreate() {
    // TODO Auto-generated method stub
    super.onCreate();
    Thread t
    =new Thread(this);
    t.start();
    }


    @Override
    publicvoid onDestroy() {
    // TODO Auto-generated method stub
    super.onDestroy();
    }

    publicstaticvoid newTask(Task task) {
    allTask.add(task);
    }


    //执行任务,业务逻辑调用,执行完后移出任务
    publicvoid doTask(Task task) {

    Message mess
    = handler.obtainMessage();
    mess.what
    = task.getTaskId();
    System.out.println(
    "#####----doTask-----");
    try {
    switch (task.getTaskId()) {

    case Task.TASK_LOGIN:

    weibo.setUserId((String)task.getParams().get(
    "user"));
    weibo.setPassword((String)task.getParams().get(
    "pass"));
    try {
    User u
    = weibo.verifyCredentials();
    nowUser
    = u;
    mess.obj
    = u;

    }
    catch (WeiboException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    mess.obj
    =null;
    }

    break;

    case Task.TASK_GET_TIMELINE:

    List
    <Status> allStatus = weibo.getFriendsTimeline();
    System.out.println(allStatus);
    mess.obj
    =allStatus;

    break;

    case Task.TASK_NEW_WEIBO:

    break;
    }
    }
    catch (WeiboException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }

    handler.sendMessage(mess);
    //发送消息
    allTask.remove(task); //执行任务结束,移出任务


    }

    //侦听任务
    @Override
    publicvoid run() {
    // TODO Auto-generated method stub
    while (isrun) {
    System.out.println(
    "------RUN-----------");
    Task lastTask
    =null;
    if (allTask.size() >0) {
    lastTask
    = allTask.get(0);
    doTask(lastTask);

    }

    try{Thread.sleep(1000);}catch(Exception e){};
    }
    }

    @Override
    public IBinder onBind(Intent arg0) {
    // TODO Auto-generated method stub
    returnnull;
    }


    //更新UI
    private Handler handler =new Handler(){

    @Override
    publicvoid handleMessage(Message msg) {
    // TODO Auto-generated method stub
    super.handleMessage(msg);
    System.out.println(
    "~~~~Handler~~~~~~~~~");
    switch (msg.what) {
    case Task.TASK_LOGIN:
    IWeiboActivity ia
    = (IWeiboActivity)getActivityByName("Login");
    ia.refresh(msg.what,msg.obj);
    break;

    case Task.TASK_GET_TIMELINE:
    IWeiboActivity ia2
    = (IWeiboActivity)getActivityByName("Home");
    ia2.refresh(
    new Integer(Home.REFRESH_WEIBO),msg.obj);
    break;
    }
    }

    };

    }
  • 相关阅读:
    弹出层
    浅析.Net下的多线程编程
    网站新闻模块中应用装饰模式
    通过MVC模式将Web视图和逻辑代码分离
    得到任意网页源代码 (利用WebClient和WebRequest类)
    ASP.NET网站部署问题集
    什么是url重写
    C#基础概念二十五问(一)
    ASP.NET Memory:如果你的应用已经在生产环境中,那为什么还要debug=true
    Go Gob编码
  • 原文地址:https://www.cnblogs.com/gzggyy/p/2091104.html
Copyright © 2020-2023  润新知