我在活动和服务(位于另一个应用程序中)之间创建了通信。当我的服务收到来自活动的调用时,它会生成一个新线程来执行任务。通常,完成此任务需要 3 秒。
当来自活动的消息到达服务时,我们会保留它。并检查此消息的replyTo 是否为空。replyTo 不为空。(好的)
公共类 RemoteService 扩展服务{ ... 私有静态类 IncomingHandler 扩展 Handler 实现 Observer{ 私信消息; @覆盖 公共无效句柄消息(消息消息){ //- 保存到达消息 this.msg = 味精; //- 检查replyTo的值 信使回复 = msg.replyTo; 如果(回复!= null) Log.d("tag","replyTo ====//////==== null"); 别的 Log.d("tag","replyTo ======== null"); //- 产生一个新线程来完成任务 尝试{ CustomThread 线程 = 新的 CustomThread(); thread.registerObserver(this); 线程.start(); }catch(异常 e){ log.d("标签",e.getMessage()); } } //- 任务完成时 @覆盖 公共无效更新(int结果,字符串值){ //- 检查replyTo的值 信使回复 = msg.replyTo; 如果(回复!= null) Log.d("tag","replyTo ====//////==== null"); 别的 Log.d("tag","replyTo ======== null"); //- 准备数据 捆绑数据 = 新捆绑(); data.putString("key",value); 消息消息 = Message.obtain(null,2,0,0); message.setData(数据); //- 向活动发送消息 if (replyTo != null) replyTo.send(message); } }
任务完成后,它会通知托管它的类。它将调用方法update。在handleMessage方法中,replyTo 不为null。但是,3秒后,在update方法中,replyTo为null,就崩溃了。
这是为什么?可能是因为 IncomingHandler 是一个静态类?或者还有什么原因?