Looper的用法

UI线程如何向子线程发送数据呢?答案:可以通过Handler。

Handler用于处理其它线程发送来的消息。如果Handler于在主线程中,因为主线程默认有了一个消息队列,所以不用显式使用Looper。如果Handler用于自己建立的线程中,需要自己创建队列,来接收其它线程发送来的消息。

下面的例子Hander 对象实现在自定义的线程中。

此处需要注意looper的用法,在自定义的线程中,没有looper管理消息队列来接收消息,所以需要使用Looper.prepare();

public class MainActivity extends Activity {

	private Button button;
	private Handler myhandler;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		button = (Button) findViewById(R.id.button1);
		new Thread(new Runnable1()).start();
		button.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				Message message = Message.obtain();
				message.arg1 = 1;
				myhandler.sendMessage(message);
			}
		});
	}

	class Runnable1 implements Runnable {

		@Override
		public void run() {
			// TODO Auto-generated method stub
			Looper.prepare();// 循环消息队列
			myhandler = new Handler() {

				@Override
				public void handleMessage(Message msg) {
					// TODO Auto-generated method stub
					super.handleMessage(msg);
					System.out.println(msg.arg1);
				}
			};
			Looper.loop();// 直到消息队列循环结果
		}
	}
}


Android的Looper类主要用于管理消息循环和消息队列。在Android,每个线程都有一个Looper对象,它用于循环处理消息队列的消息,以便在主线程或后台线程处理异步任务。 使用Looper类,我们可以在Android应用程序创建一个消息循环,并将消息动态地排队到消息队列。然后,我们可以在消息队列处理这些消息,以便在正确的时间和正确的上下文执行相应的操作。 以下是使用Looper类的基本步骤: 1. 创建一个Handler对象并将其附加到当前线程的Looper。 2. 在需要发送消息的地方,使用Handler的post方法将消息发送到消息队列。 3. 在Looper所在的线程处理消息队列的消息。 例如,下面的代码演示了如何在后台线程使用Looper类: ``` public class MyThread extends Thread { public Handler mHandler; @Override public void run() { Looper.prepare(); mHandler = new Handler() { @Override public void handleMessage(Message msg) { // 在此处处理消息 } }; Looper.loop(); } } ``` 在这个例子,我们创建了一个MyThread类,并在它的run方法创建了一个消息循环和消息队列。然后,我们创建了一个Handler对象,并将其附加到当前线程的Looper。最后,我们调用Looper的loop方法来开始处理消息队列的消息。 使用这种方式,我们就可以在后台线程动态地排队和处理消息,以便在正确的时间和正确的上下文执行相应的操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值