Android 开发笔记:
创建数据 Message :
其中的 MESSAGE_CODE 是任意数字,不重复就行。
Message message = mHandler.obtainMessage();//创建一个 Message
//设置数据
message.arg1 = 0; //用于携带 Int 类型的数据
message.arg2 = 1; //用于携带 Int 类型的数据
message.what = MESSAGE_CODE; //发送数据条目的标识
message.obj = 9999; //被发送的数据
发送消息:
mHandler.sendMessageDelayed(message, 1000); //一秒后发送
接收消息:
@SuppressLint("HandlerLeak")
Handler mHandler = new Handler() { //创建一个 Handler 对象
@Override
public void handleMessage(Message msg) { //接收 Message 消息,msg 是接收到的信息
super.handleMessage(msg);
//判断消息,读取消息标识
switch (msg.what) {
case MESSAGE_CODE:
int value = (int) msg.obj;
mTextView01.setText("" + value);
break;
}
}
};
下面是使用 Handler 简单的实现倒计时代码:
public class MainActivity extends AppCompatActivity {
@SuppressLint("HandlerLeak")
Handler mHandler = new Handler() {
@Override
public void handleMessage(Message msg) { //接收 Message 消息,msg 是接收到的信息
super.handleMessage(msg);
//判断消息
switch (msg.what) {
case MESSAGE_CODE:
int value = (int) msg.obj;
mTextView01.setText("" + value);
msg = Message.obtain(); //重新设动数据
msg.arg1 = 0;
msg.arg2 = 1;
msg.what = MESSAGE_CODE;
msg.obj = value - 1;
if (value > 0) { //value 大于0,继续发送消息
sendMessageDelayed(msg,1000); //发送消息
}
break;
}
}
};
private static final int MESSAGE_CODE = 100; //消息标识
private TextView mTextView01;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mTextView01 = findViewById(R.id.TextView01);
//Message message = new Message(); //创建一个 Message【不会自动销毁,不建议使用】
Message message = mHandler.obtainMessage();//创建一个 Message【官方建议,可自动维护销毁】
//设置数据
message.arg1 = 0; //用于携带 Int 类型的数据
message.arg2 = 1; //用于携带 Int 类型的数据
message.what = MESSAGE_CODE; //发送数据条目的标识
message.obj = 9999; //被发送的数据
//发送消息
mHandler.sendMessageDelayed(message, 1000); //一秒后发送
}
}