2

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

这是我尝试过的:

        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();

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

4

2 回答 2

3

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

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 类。

希望能帮助到你!

于 2010-07-10T07:57:44.767 回答
-3

我也遇到了这个问题。

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

前任:

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

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

MyActivity.thisActivity.sendBroadcast(myintent);

希望,这回答了你的问题!

于 2012-06-06T09:09:47.950 回答