代码解释 private Handler mHandler = new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); Bundle bundle; switch (msg.what){ case msgKey1: bundle =msg.getData(); textView.setText(bundle.getString(pingRes)); break; default: break; } } };
时间: 2023-05-23 22:00:43 浏览: 53
这段代码定义了一个私有的Handler类,并重写了它的handleMessage方法。在该方法中,根据msg传递过来的what值进行了不同的操作,当what等于msgKey1时,将msg中的数据通过Bundle获取并设置到textView中,否则不进行任何操作。
相关问题
android怎么使用Handler进行变量交互,举个例子
:可以通过以下步骤使用Handler进行变量交互:
1. 创建一个Handler对象
```
Handler mHandler = new Handler();
```
2. 在子线程中通过Handler对象发送消息(包含要传递的变量)到主线程
```
Message message = mHandler.obtainMessage();
Bundle bundle = new Bundle();
bundle.putString("key", "value"); //添加变量信息
message.setData(bundle);
mHandler.sendMessage(message);
```
3. 在主线程中使用Handler对象接收消息,并获取传递过来的变量
```
mHandler = new Handler(){
@Override
public void handleMessage(Message msg){
super.handleMessage(msg);
String value = msg.getData().getString("key");
//使用传递过来的变量
}
};
```
举例说明: 假设在子线程中需要传递一个字符串变量到主线程,可以通过如下代码实现:
```
new Thread(new Runnable() {
@Override
public void run() {
Message message = mHandler.obtainMessage();
Bundle bundle = new Bundle();
bundle.putString("str", "Hello from sub-thread!");
message.setData(bundle);
mHandler.sendMessage(message);
}
}).start();
```
在主线程中接收消息并获取传递过来的字符串变量,可以通过如下代码实现:
```
mHandler = new Handler(){
@Override
public void handleMessage(Message msg){
super.handleMessage(msg);
String str = msg.getData().getString("str");
Log.d(TAG, "Received message: " + str);
}
};
```
Android handler的使用代码
下面是一个简单的 Android Handler 的使用示例代码:
```java
public class MainActivity extends AppCompatActivity {
private Handler mHandler;
private TextView mTextView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mTextView = findViewById(R.id.text_view);
// 创建 Handler 对象,指定在 UI 线程中执行
mHandler = new Handler(Looper.getMainLooper()) {
@Override
public void handleMessage(@NonNull Message msg) {
super.handleMessage(msg);
// 处理消息
if (msg.what == 1) {
mTextView.setText("Hello World!");
}
}
};
// 发送消息
mHandler.sendEmptyMessage(1);
}
}
```
在这个示例中,我们创建了一个 Handler 对象,并指定它在 UI 线程中执行。然后我们发送一个空消息,这个消息的 what 值为 1。在 Handler 的 handleMessage() 方法中,我们处理这个消息,如果它的 what 值为 1,就将 TextView 的文本设置为 "Hello World!"。由于这个 Handler 是在 UI 线程中创建的,因此它可以直接更新 UI。