Android异步消息处理

#Android异步消息处理

  1. 定义:service是android实现程序后台运行的解决方案,它适合执行 不需要和用户交互但又长期运行的任务。
    注意:
    (1) 服务依赖于创建它的应用程序进程,应用程序一旦被杀死,服务相应的也就终止执行。
    (2) 服务并不会创建子线程,需要开发者自己设计实现子线程。
  2. android多线程
    android多线程和java多线程一样,有三种实现方式:
  • 继承父类Thread:
    public void MyThread extends Thread{
    	@override
    		public void run(){
    		//子线程任务代码
    		}
    	}
    
    
  • 实现接口Runable
    public void MyThead implements Runable{
    	@override
    	public void run(){
    	//子线程任务代码
    	}
    }
    
  • 实现匿名类
    ```
    new Thread(new Runable(){
    @override
    public void run(){
    //子线程任务代码
    }
    }).start();
  1. android异步处理机制—Handler
    和大多数GUI一样,android的UI也是线程不安全的,所以更新UI的操作只能放在主线程中。
  • handle实例
    public class MainActivity extends Activity impl...{
       public static int UPDATE = 1;
       private TextView text;
       private Handler handler = new Handler(){
       	public void handleMessage(Message msg){
       		switch(msg.what){
       			case UPDATE:
       				text.setText("Changed msg!");
       				break;
       			default: ;
       				
       		}//switch
       	}//handleMessage
       }//handler
       ......
       @override
       public void onClick(View v){
       	switch(v.getId()){
       		case R.id.text:
       			new Thread(new Runable(){
       			@override
       			public void run(){
       				Message msg =new Message;
       				msg.what=UPDATE;
       				handler.sendMessage();
       			}
       			}).start();
       			break;
       		default:
       			break;
       	}//switch
       }//onClick
       ......
    }//Activity
    

上面是一个用Handler类在主线程和子线程中传递消息修改TextView的实例,子线程只负责传递修改UI的信号,真正修改UI的动作在主线程中根据子线程传递的信号发生。

  • handler机制
    android异步消息处理机制由四个部分组成:
    Message,Handler,MessageQueue和Looper,他们的关系如下面所示:
    这里写图片描述
    Message: 它是线程间传递消息的类,内部可以携带少量的信息,它的what可以携带信息,好友arg和obj字段可以携带整形和对象数据。
    Handler: 它是消息处理类,主要负责消息的发送和处理,比如在主线程中创建handler对象时要实现起消息处理方法handleMessage(),在子线程中调用sendMessage()方法传递消息。
    MessageQueue: 是message的管理者,每当handler发出一个消息,就进入消息队列进行等待。
    Looper: 是message调度者,每次从MessageQueue中取出消息并传递给handler的handleMessage方法进行处理。
  1. android异步处理机制—AsyncTask
    android对异步消息处理机制进行很好的封装,有了AsyncTask这个工具,我们可以很方便的根据自己的需求实现线程间的切换。
  • 实例
    public void class DownloadTask entends 
    			AsyncTask<Void,Integer,Boolean>{
    		
    
    	} 
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值