来自子线程的Android广播

And*_*dan 0 multithreading android broadcast broadcastreceiver

我正在尝试使用广播公司将消息从子线程发送到主UI线程.所以我的活动有一个广播接收器(我讨厌多个),我希望能够从一个单独的子线程(runnable)发送消息.

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

Intent broadcastIntent = new Intent();
broadcastIntent.setAction(ResponseReceiver.ACTION_RESP);
broadcastIntent.putExtra("Controller", "connect");
context.sendBroadcast(broadcastIntent);
Run Code Online (Sandbox Code Playgroud)

但问题是我如何定义上下文?它给出了异常"上下文无法解决"如果我不使用它,它将找不到"sendBroadcast"方法.那么怎么做呢?

tri*_*iad 5

您可以将活动或应用程序上下文传递给您的线程.

如果您在活动中,您可以:

    Context myContext;
    myContext = this;
Run Code Online (Sandbox Code Playgroud)

要么

    myContext = getApplicationContext();
Run Code Online (Sandbox Code Playgroud)

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

    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.
        }
    }
Run Code Online (Sandbox Code Playgroud)