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 dialog小结
  2. Android(安卓)Bundle类(简单实例)
  3. android中的bundle传送数据
  4. Android——拖动条SeekBar
  5. Android:可拆分和可序列化之间的区别?
  6. android之蓝牙设备的使用01
  7. Android(安卓)控制闪光灯
  8. Android(安卓)多线程之线程池
  9. Android(安卓)Handler机制8之消息的取出与消息的其他操作

随机推荐

  1. 详解 centos7设置nfs文件共享 实操记
  2. 2020 总结 | VoltDB的亮点,你了解多少?
  3. 自学系列 | 俺今天就谈兴趣!
  4. 自学第五十五天
  5. C++中 unordered_map 与 map 的区别
  6. 谁的青春不迷茫?
  7. kubernetes 命令随手记录
  8. modelsim经常破解失败
  9. 动画:面试算法之求二叉树的下一节点
  10. 72.打印正方形脚本