Android当中的线程

Android铁律。在UI线程之外不能修改UI、

在Android中线程可以分为两大块,一个是Main Thread(UI线程、主线程)一个是Worder Thread(其他线程(原则上来说是不能操作UI的))。

class mythread extends Thread{
public void run(){
try {
Thread.sleep(1*1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
textview.setText("来自线程的修改");
}

}//线程的定义和JAVA一样,这个线程先休息一秒钟。然后去修改textview的内容。

但是这样运行会出错,因为这个是一个Worker Thread

我们需要在主线程里面才能修改UI.

但是有一些控件是允许的 例如progress Bar.

如果所有事情都放在主线程里面来做的话,就会堵塞。会出现程序没有响应。

在一个应用程序当中,主线程通常用于接受用户的输入,以及将运算的结果反馈给用户。

所以说对于一些可能会产生阻塞的操作必须放在 worker thread.

______________________________________________________

handler looper MessageQueue

handler负者把消息对象加入消息队列,之后looper不停的从消息队列中取出消息对象(如果没有对象looper就处于等待的状态),looper将会调用handler的message的方法。

  

public class MainActivity extends Activity {
private Button button;
private Handler handler;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button=(Button)findViewById(R.id.buttonid);
handler=new FirstHandler();
button.setOnClickListener(new ButtonListener());
}
class ButtonListener implements OnClickListener{


@Override
public void onClick(View v) {
//当用户点击一个按钮时,我们创建一个消息对象,并使用Handler发送该对象
Message msg =handler.obtainMessage();//获取一个消息对象
msg.what=2;//给这个对象的属性赋值
handler.sendMessage(msg);//然后把这个对象放到handler里面去
//上面一行代码将消息对象放置到消息队列当中
//1.Looper将会从消息队列当中将消息对象取出。
//2.Looper将会找到与消息对象对应的Handler对象
//3.Looper将会调用Handler对象的handleMessage(Message msg)方法,用于处理消息对象
}



}
class FirstHandler extends Handler{


@Override
public void handleMessage(Message msg) {
int what=msg.what;
System.out.println(what);
}

}




更多相关文章

  1. Android 多线程之线程池
  2. Android Handler机制8之消息的取出与消息的其他操作
  3. Android安全加密:消息摘要Message Digest
  4. android消息机制原理详解
  5. Android消息循环实现原理分析
  6. Android架构分析之Android消息处理机制(三)
  7. Android 安全加密:消息摘要Message Digest详解
  8. Android架构分析之Android消息处理机制(一)

随机推荐

  1. [置顶] 使用BleLib的轻松搞定Android低功
  2. 【Android应用开发】-(19)Android(安卓)串
  3. android自动化测试工具简介
  4. 2013.03.19(8)———android 打开url 浏览
  5. Android(安卓)GridView的使用
  6. android:launchMode — “standard” “s
  7. 几个标签属性的意义
  8. android下拉刷新android-Ultra-Pull-To-R
  9. Android使用Asynchronous Http Client完
  10. Android手势翻页效果