android service和activity通信sendBroadcast报错nullpointerexeption
service中总是获取不到context,sendBroadcast报空指针异常
`public class HandleMessage extends Service{
private String qrcontent = null;
private Context context = this;
@Override
public void onCreate() {
super.onCreate();
context = this;
}
public void doSomething(final String content){
qrcontent = content;
new Thread(new Runnable() {
@Override
public void run() {
//发送广播
Intent intent=new Intent();
intent.putExtra("qrcontent", qrcontent);
intent.setAction("com.HandleMessage");
if(intent != null){
LocalBroadcastManager.getInstance(context).sendBroadcast(intent);
}else{
Log.e("---","null intent");
}
}
}).start();
}
}`
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
服务在哪启动的
为什么开个线程去发广播?
Activity 与 Service 通信可以使用官方文档的方式:绑定服务。
doSomething 这个方法在哪里调用 ?现有代码看的不够全面,如果在HandleMessage类中运行的话,可以直接写HandleMessage.this
把出错的进程栈贴出来,便于分析
我曾经也碰到过这个问题。这个和你的service启动方式和doSomething的调用方式有关。如果你是用Service s = new Service();service.doSomething();的方式来调用的话,context就应该从activity里面传过来,否则context会报空指针。
将doSomething()的调用放在Service里面的生命周期里面是没问题的吧。
再就是要参考activity和Service的通信方式进行调用。