是的,Android的Handler
类支持自定义视图。你可以通过以下步骤在自定义视图中使用Handler
:
- 在自定义视图的构造函数中,初始化
Handler
对象:
public class CustomView extends View { private Handler handler; public CustomView(Context context, AttributeSet attrs) { super(context, attrs); init(); } private void init() { handler = new Handler(new Handler.Callback() { @Override public boolean handleMessage(Message msg) { // 处理消息的代码 return false; } }); } }
- 使用
Handler
发送和处理消息:
// 发送消息 handler.sendMessage(handler.obtainMessage(1, "Hello from CustomView")); // 处理消息 @Override public boolean handleMessage(Message msg) { switch (msg.what) { case 1: String message = (String) msg.obj; // 更新视图的代码 break; } return false; }
- 在自定义视图的生命周期方法中,如
onAttachedToWindow()
和onDetachedFromWindow()
,分别添加和移除消息处理程序:
@Override protected void onAttachedToWindow() { super.onAttachedToWindow(); // 添加消息处理程序 getHandler().getLooper().addThreadHandler(handler); } @Override protected void onDetachedFromWindow() { super.onDetachedFromWindow(); // 移除消息处理程序 getHandler().getLooper().removeThreadHandler(handler); }
这样,你就可以在自定义视图中使用Handler
来处理消息和更新视图了。