MainActivity如下:
package cc.c; import android.os.Bundle; import android.os.Handler; import android.os.Looper; import android.os.Message; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.TextView; import android.app.Activity; /** * Demo描述: * 在子线程中给主线程的消息队列发送消息. * * 这就是我们平常最常用的套路: * 1 实例化mHandler * 2 在子线程中使用该mHandler向主线程的消息队列发送消息 * * * 至于在哪里初始化mHandler,这个不是很重要.重要的是在初始化时传入的是谁的Looper. * 在该示例中,正因为在初始化一个Handler时候使用的是主线程的Looper(即getMainLooper()) * 那么消息当然是发到了主线程的消息队列. * */ public class MainActivity extends Activity { private TextView mTextView; private Button mButton; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); init(); } private void init() { mTextView = (TextView) findViewById(R.id.textView); mButton = (Button) findViewById(R.id.button); mButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { new Thread() { public void run() { HandlerTest handlerTest = new HandlerTest(getMainLooper()); Message message = new Message(); message.obj = "Hello~"; handlerTest.sendMessage(message); }; }.start(); } }); } private class HandlerTest extends Handler { private HandlerTest(Looper looper) { super(looper); } @Override public void handleMessage(Message msg) { super.handleMessage(msg); mTextView.setText("在主线程中,收到子线程发来消息:" + msg.obj); } } }
main.xml如下:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" > <TextView android:id="@+id/textView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/hello_world" android:layout_centerHorizontal="true" android:layout_marginTop="70dip" /> <Button android:id="@+id/button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Click" android:layout_centerInParent="true" /> </RelativeLayout>
时间: 2024-10-03 19:58:53