Android从子线程广播

发布于 2025-01-08 17:43:36 字数 401 浏览 0 评论 0原文

我正在尝试使用广播器将消息从子线程发送到主 UI 线程。因此,我的活动有一个广播接收器(我讨厌多个),并且我希望能够从一个子线程(可运行)向它们发送消息。

这是我在子线程中所做的事情:

Intent broadcastIntent = new Intent();
broadcastIntent.setAction(ResponseReceiver.ACTION_RESP);
broadcastIntent.putExtra("Controller", "connect");
context.sendBroadcast(broadcastIntent);

但问题是我如何定义上下文?它给出了异常“上下文无法解析”如果我不使用它,它将找不到“sendBroadcast”方法。那么如何才能做到这一点呢?

I'm trying to use broadcasters to send messages from a child thread to the main UI thread. So i have a broadcast receiver on my activities (i hate multiple) and i want to be able to send them messages from one single child thread (runnable).

Here is what i'm doing in the child thread:

Intent broadcastIntent = new Intent();
broadcastIntent.setAction(ResponseReceiver.ACTION_RESP);
broadcastIntent.putExtra("Controller", "connect");
context.sendBroadcast(broadcastIntent);

But the problem is how i define context? It gives the exception "context cannot be resolved" If i don't use it, it won't find "sendBroadcast" method. So how can this be done?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

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

发布评论

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

评论(1

忱杏 2025-01-15 17:43:36

您可以将“活动”或“应用程序”上下文传递给线程。

如果您在活动中,您可以执行以下操作:

    Context myContext;
    myContext = this;

    myContext = getApplicationContext();

然后将上下文传递给您的子线程:

    new Thread(new SomeThread(myContext)).start();



    public class SomeThread implements Runnable
    {
        Context context;
        public SomeThread(Context ctx)
        {
            context = ctx;
        }

        public void run()
        {
            // Do stuff with context.
        }
    }

You can pass in your Activity or Application context to your thread.

If you're in an Activity, you can do:

    Context myContext;
    myContext = this;

or

    myContext = getApplicationContext();

Then pass in context to your child thread:

    new Thread(new SomeThread(myContext)).start();



    public class SomeThread implements Runnable
    {
        Context context;
        public SomeThread(Context ctx)
        {
            context = ctx;
        }

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