我们知道handler是android中的一个传送机制,可以传送各种各样的消息,使得多线程的使用更加方便。但是我这里说的是,我们还可以利用handler来截断发送的消息。代码如下
xml代码
1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="http://schemas.android.com/tools" 3 android:layout_width="match_parent" 4 android:layout_height="match_parent" 5 tools:context="com.example.android_handler2.MainActivity" > 6 <Button 7 android:id="@+id/button" 8 android:layout_width="fill_parent" 9 android:layout_height="wrap_content" 10 android:text="@string/button_string" 11 /> 12 </LinearLayout>
java代码
1 package com.example.android_handler2; 2 3 4 5 6 7 import android.app.Activity; 8 import android.os.Bundle; 9 import android.os.Handler; 10 import android.os.Handler.Callback; 11 import android.os.Message; 12 import android.view.View; 13 import android.view.View.OnClickListener; 14 import android.widget.Button; 15 import android.widget.Toast; 16 17 public class MainActivity extends Activity implements OnClickListener{ 18 private Button button = null; 19 private Handler handler = new Handler(new Callback() { 20 //只要return的是true,就会截断下面的handlerMessage中接的方法 21 public boolean handleMessage(Message msg) { 22 Toast.makeText(MainActivity.this, "1", Toast.LENGTH_LONG).show(); 23 return true; 24 } 25 }){ 26 public void handleMessage(Message msg) { 27 Toast.makeText(MainActivity.this, "2", Toast.LENGTH_LONG).show(); 28 return ; 29 } 30 }; 31 protected void onCreate(Bundle savedInstanceState) { 32 super.onCreate(savedInstanceState); 33 setContentView(R.layout.activity_main); 34 button = (Button) findViewById(R.id.button); 35 button.setOnClickListener(this); 36 } 37 @Override 38 public void onClick(View v) { 39 handler.sendEmptyMessage(1); 40 41 } 42 43 }
运行这个程序我们知道,toast只打印出1,而没打印出2来,因此表明2已经被截断了。
时间: 2024-12-14 11:10:08