从BroadcastReceiver启动活动

时间:2013-10-10 21:44:09

标签: android android-activity broadcastreceiver android-service

在我的应用中,我在BroadcastReceiver的{​​{1}}方法中注册onCreate()

Service

现在,每次registerReceiver(receiver, newIntentFilter(myAction)); 发生时,我都需要从新注册的BroadcastReceiver开始活动:

onReceive(Context context, Intent intent)

“上下文”是Intent i = new Intent(context,MyClass.class); i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(i); ,已传递给我的Context。这成功地开始了BroadcastReceiver。这是从ActivityActivity内启动BraodcastReceiver的正确可靠方式吗?因为获取Service有很多内容,例如ContextgetApplicationContext()等等。

在我的情况下,是否正在使用以getApplication()正确方式传递的Context

2 个答案:

答案 0 :(得分:3)

可以使用“startActivity()”函数从服务启动活动。

尝试这样的事情:

public void startAct() {
    Intent i = new Intent();
    i.setClass(this, MyActivity.class);
    i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(i);
}

并在BroadcastReceiver内调用该功能。

android.app.Serviceandroid.app.Context的后代,因此您可以直接使用startActivity方法。但是,由于您在任何活动之外启动此操作,因此需要在意图上设置FLAG_ACTIVITY_NEW_TASK标记。

希望它有所帮助。

答案 1 :(得分:2)

答案是肯定的。您可以使用作为Context参数传递的onReceive()来启动活动。您还可以使用应用程序的上下文,如下所示:

context.getApplicationContext().startActivity(i);

没有区别。两者都有效。