Tôi đang làm việc trên kết nối rfcomm Bluetooth. Có một dòng trong Mẫu Android mà tôi không thể hiểu và tiếc là tôi không thể tìm thấy câu trả lời hay trong các câu hỏi và tài nguyên khác.Không thể hiểu mHandler.obtainMessage() trong mẫu Android Bluetooth
Dưới đây là toàn bộ mã:
public void run() {
byte[] buffer = new byte[1024]; // buffer store for the stream
int bytes; // bytes returned from read()
// Keep listening to the InputStream until an exception occurs
while (true) {
try {
// Read from the InputStream
bytes = mmInStream.read(buffer);
// Send the obtained bytes to the UI activity
mHandler.obtainMessage(MESSAGE_READ, bytes, -1, buffer)
.sendToTarget();
} catch (IOException e) {
break;
}
}
}
/* Call this from the main activity to send data to the remote device */
public void write(byte[] bytes) {
try {
mmOutStream.write(bytes);
} catch (IOException e) { }
}
Tôi không thể hiểu dòng này:
// Read from the InputStream
bytes = mmInStream.read(buffer);
// Send the obtained bytes to the UI activity
mHandler.obtainMessage(MESSAGE_READ, bytes, -1, buffer)
.sendToTarget();
mHandler
không được định nghĩa trong mã này và cũng MESSAGE_READ
tôi không thể hiểu những gì hiện bytes
làm gì?
Tôi nghĩ và như đã đề cập trong nhận xét, nó sẽ gửi Bytes đã nhận đến Hoạt động mà tôi đặt làm Hoạt động chính của tôi. Tôi có thể thực hiện Static TextView
trong Hoạt động chính của mình thay vì sendToTarget() để hiển thị thông báo đã nhận không?
mHandler có lẽ là một biến thể hiện, được khai báo ở đâu đó trong lớp của bạn. MESSAGE_READ có thể là một hằng số, được định nghĩa trong lớp hoặc thông qua một lần nhập tĩnh. – assylias