android 消息管理器,Android中消息处理的方式(监听,回调接口,Handler))

第一种:监听

流程:外部操作  触发事件源  事件源生成事件对象并作为参数 传入事件处理器   事件处理器只想对应操作

监听使用的方法:常用的两种:1、使用匿名类 setXXlistnener  2、为Activity设置监听器 (在xml中设置)

第二种、接口回调

例如:①在该组件上触发屏幕事件: boolean onTouchEvent(MotionEvent event);

②在该组件上按下某个按钮时: boolean onKeyDown(int keyCode,KeyEvent event);

③松开组件上的某个按钮时: boolean onKeyUp(int keyCode,KeyEvent event);

④长按组件某个按钮时: boolean onKeyLongPress(int keyCode,KeyEvent event);

⑤键盘快捷键事件发生: boolean onKeyShortcut(int keyCode,KeyEvent event);

⑥在组件上触发轨迹球屏事件: boolean onTrackballEvent(MotionEvent event);

如果为按钮同时设置  监听,回调,Activity监听  执行的顺序是   监听、回调、Activity监听

如果回调返回True 则不会传播了

Handler(消息处理机制):

为什么要引入Handler  多线程并发操作UI组件  会引发安全问题  所以呢规定只允许在UI线程中修改Actiity组件 那么如果想要在子线程中修改UI组件怎么办呢  需要用到Handler了

Handler的流程:Handler 发送一个Message消息  发送完以后就放进了MessageQueue消息队列里面   然后呢 Looper(用来管理消息队列的)  取出Message 并交给Handler去处理

handler  有写在主线程跟子线程两种方式    主要区别在于  写在子线程中需要创建Looper对象

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 以下是使用 AndServer 搭建服务并调用 registerHandler 处理消息的示例代码: 1. 首先在 build.gradle 文件添加 AndServer 的依赖: ``` dependencies { implementation 'com.yanzhenjie:androihttp-server:3.5.4' } ``` 2. 在 onCreate 方法初始化 AndServer 服务: ``` private Server mServer; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 初始化 AndServer 服务 mServer = AndServer.serverBuilder() .port(8080) // 设置端口号 .build(); mServer.startup(); } ``` 3. 在 registerHandler 方法处理消息: ``` private void registerHandler() { mServer.addHandler(new HttpHandler() { @Override public void handle(HttpRequest request, HttpResponse response, HttpContext context) throws HttpException, IOException { // 处理请求 String uri = request.getUri(); String body = HttpEntityUtils.toString(request.getEntity(), "UTF-8"); String result = "请求的 URI:" + uri + "\n请求的参数:" + body; // 返回响应 response.setStatusCode(HttpStatus.SC_OK); response.setEntity(new StringEntity(result, "UTF-8")); } }); } ``` 调用 registerHandler 方法后,当有客户端发送请求时,就会调用 handle 方法来处理请求,并返回结果。可以根据需求修改 handle 方法的代码来完成具体的功能。 ### 回答2: 在Android使用AndServer框架搭建服务器后,可以使用registerHandler方法来处理消息。下面是一个示例代码,演示了如何调用registerHandler方法: 1. 首先,确保已经在项目的build.gradle文件添加了AndServer的依赖。 2. 在Android的Activity或Fragment创建一个AndServer实例,并设置服务器的一些基本配置,如端口号等。 ```java AndServer andServer = AndServer.serverBuilder() .inetAddress(NetworkUtils.getLocalIPAddress()) // 设置服务器的IP地址 .port(8080) // 设置服务器的端口号 .listener(new Server.ServerListener() { @Override public void onStarted() { // 服务器启动成功回调 } @Override public void onStopped() { // 服务器停止回调 } @Override public void onException(Exception e) { // 服务器异常回调 } }) .build(); ``` 3. 在AndServer实例上调用registerHandler方法注册处理器,用于处理客户端发送的请求。可以自定义一个继承自BaseRouteHandler处理器类,并重写handle方法来处理不同的请求。 ```java andServer.get("/", new BaseRouteHandler() { @Override public void handle(HttpRequest request, HttpResponse response) { // 处理客户端请求的逻辑 } }); ``` 4. 最后,在合适的时机调用AndServer实例的start方法来启动服务器。 ```java andServer.start(); ``` 以上代码演示了如何使用AndServer的registerHandler方法来处理客户端请求。需要根据具体的业务逻辑来自定义处理器,并在处理实现相应的处理逻辑。同时,还需要根据具体的需求来设置服务器的监听IP地址和端口号。 ### 回答3: 在Android使用AndServer搭建服务器后,我们可以通过调用`registerHandler`方法来处理消息。下面是一个简单示例代码: 首先,你需要创建一个`Handler`类来处理特定的请求。这个类需要实现`org.andserver.handler.HttpRequestHandler`接口,并且实现`handleRequest`方法来处理请求并返回响应。例如: ```java public class MyRequestHandler implements HttpRequestHandler { @Override public void handleRequest(HttpRequest request, HttpResponse response, HttpContext context) { // 在这里处理请求并返回响应 String responseBody = "Hello, World!"; response.setBody(responseBody); response.setContentType("text/plain"); response.addHeader("Server", "MyServer"); response.setStatus(HttpStatus.OK); } } ``` 然后,在你的AndServer实例,你可以调用`registerHandler`方法来注册这个处理器。例如: ```java AndServer andServer = AndServer.webServer(getApplicationContext()) .port(8080) .build(); // 创建一个URL映射器 BasicPathRouter<String> router = new BasicPathRouter<>(); router.register("/hello", new MyRequestHandler()); // 注册URL映射器到AndServer实例 andServer.addInterceptor(new RouterInterceptor(router)); // 启动AndServer andServer.startup(); ``` 在上面的示例,我们注册了一个URL映射器并添加到AndServer实例。这样,当有请求到达时,AndServer就会根据URL映射器的配置来选择合适的处理器来处理请求。 当有客户端请求`/hello`时,就会调用`MyRequestHandler`的`handleRequest`方法来处理请求,并返回响应。 以上就是在Android使用AndServer搭建服务器后,如何调用`registerHandler`处理消息的示例代码。希望对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值