我在活动和服务(位于另一个应用程序中)之间创建了通信。当我的服务收到来自活动的调用时,它会生成一个新线程来执行任务。通常,完成此任务需要 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 是一个静态类?或者还有什么原因?