android service和activity通信sendBroadcast报错nullpointerexeption

发布于 2022-09-04 22:00:05 字数 887 浏览 14 评论 0

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

一个人的旅程 2022-09-11 22:00:05

服务在哪启动的

戴着白色围巾的女孩 2022-09-11 22:00:05

为什么开个线程去发广播?

无远思近则忧 2022-09-11 22:00:05

Activity 与 Service 通信可以使用官方文档的方式:绑定服务

〗斷ホ乔殘χμё〖 2022-09-11 22:00:05

doSomething 这个方法在哪里调用 ?现有代码看的不够全面,如果在HandleMessage类中运行的话,可以直接写HandleMessage.this

泅人 2022-09-11 22:00:05

把出错的进程栈贴出来,便于分析

蹲墙角沉默 2022-09-11 22:00:05

我曾经也碰到过这个问题。这个和你的service启动方式和doSomething的调用方式有关。如果你是用Service s = new Service();service.doSomething();的方式来调用的话,context就应该从activity里面传过来,否则context会报空指针。
将doSomething()的调用放在Service里面的生命周期里面是没问题的吧。
再就是要参考activity和Service的通信方式进行调用。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文