从可运行的发送广播意图

发布于 2024-09-08 13:47:11 字数 433 浏览 4 评论 0原文

我想从新线程开始发送广播。

这就是我尝试过的:

        new Thread(new Runnable() {
        public void run() {
            //some other code for timing.
            // ..
            // ..
            Intent broadcastIntent = new Intent();
            broadcastIntent.setAction(Intent.ACTION_ANSWER);
            this.sendBroadcast(broadcastIntent);
        }
    }).start();

但是我当然需要上下文..这是行不通的。 我该如何处理这个问题。

I want to send a broadcast from a new thread is start.

This is what i tried :

        new Thread(new Runnable() {
        public void run() {
            //some other code for timing.
            // ..
            // ..
            Intent broadcastIntent = new Intent();
            broadcastIntent.setAction(Intent.ACTION_ANSWER);
            this.sendBroadcast(broadcastIntent);
        }
    }).start();

But ofcourse i need context..this won't work.
How can i handle this.

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

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

发布评论

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

评论(2

二智少女猫性小仙女 2024-09-15 13:47:11

我通常做的事情虽然很老套,但如下:

final Context mCtx = this;
new Thread(new Runnable() {
    public void run() {
        //some other code for timing.
        // ..
        // ..
        Intent broadcastIntent = new Intent(mCtx, TargetClass.java);
        broadcastIntent.setAction(Intent.ACTION_ANSWER);
        this.sendBroadcast(broadcastIntent);
    }
}).start();

另外,请记住在 Intent 构造函数中包含目标 Java 类。

希望有帮助!

What I usually do, although quite hacky, is the following:

final Context mCtx = this;
new Thread(new Runnable() {
    public void run() {
        //some other code for timing.
        // ..
        // ..
        Intent broadcastIntent = new Intent(mCtx, TargetClass.java);
        broadcastIntent.setAction(Intent.ACTION_ANSWER);
        this.sendBroadcast(broadcastIntent);
    }
}).start();

Also, remember to include the target Java class in the Intent constructor.

Hope it helps!

梦亿 2024-09-15 13:47:11

我也面临这个问题。

这是我的解决方案。您要在其中实现此功能的应用程序必须有一个活动。
因此,在该活动中,为其自身创建一个静态变量并将其分配给它。

例如:

public class MyActivity extends Activity {
    static MyActivity thisActivity = this;
    //rest of the code goes here
}

现在,在线程中,执行以下操作:

MyActivity.thisActivity.sendBroadcast(myintent);

希望这能回答您的问题!

I faced this problem too.

Here is my solution. The application in which you are implementing this must have an Activity.
So, in that Activity, make a static variable of itself and assign this to it.

ex:

public class MyActivity extends Activity {
    static MyActivity thisActivity = this;
    //rest of the code goes here
}

Now, in the thread, do this:

MyActivity.thisActivity.sendBroadcast(myintent);

hope, this answers your question!

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