android开发教程之handle实现多线程和异步处理

2019-12-10 20:11:52刘景俊
易采站长站为您分析android的handle实现多线程和异步处理的示例,大家参考使用吧    

这次浅谈一下Handler,为什么会出现Handler这个功能特性呢?首先,在之前的基本控件,基本都是在Activity的onCreate(Bundle savedInstanceState)方法中调用和处理的,但是,在有些情况,比如在网络上下载软件等一些需要等待响应时间比较长的操作,如果同样放在Activity的该方法中的话,那么在执行该方法的时候,整个Activity是不可动的,用户只能干等着,这样的用户体验是十分差的,这种处理方式带来的最好结果是等待了一段时间后,得到了想要的结果,不好的情况就是等了N久,也没有出现结果,有的甚至会使Activity报错,为了避免这些情况的发生,所以引入了Handler的特性,他就像是一个线程队列,它也是一种异步的消息处理。

首先我们先看一个例子,通过例子来对Handler进行认识。

布局文件中是两个按钮,分别是start和stop,分别控制线程的开始和停止。
 

复制代码
<Button  
    android:id="@+id/start" 
    android:layout_height="wrap_content" 
    android:layout_width="fill_parent" 
    android:text="@string/start" 
/> 
<Button  
    android:id="@+id/stop" 
    android:layout_height="wrap_content" 
    android:layout_width="fill_parent" 
    android:text="@string/stop" 
/> 

 

在Activity中的代码如下:

复制代码
import android.app.Activity; 
import android.os.Bundle; 
import android.os.Handler; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 

public class HandlerDemo1Activity extends Activity { 
    Button startButton = null; 
    Button endButton = null; 
    Handler handler = new Handler(); 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.main); 
        startButton = (Button)findViewById(R.id.start);