从广播接收器启动活动

时间:2012-02-21 22:40:13

标签: android android-intent broadcastreceiver

我有Android的以下方案:我有一个应用程序,在启动时启动服务。该服务每30分钟检查一次网址。如果获得特定响应,它会发送应用程序接收并处理的广播。这种情况对我很有用。

我还希望我的服务在用户停止运行应用程序(app out of foreground)后继续运行。我已经开始工作了。

我面临的问题是当Activity收到广播消息时,我无法让Activity返回到前台。我已经尝试了各种意图组合,但还没有想出来。我做错了什么?

我的BroadcastReceiver代码如下所示:

private BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        launchApp();
    }
};

private void launchApp() {
    Intent vukaniActivity = new Intent(this, Vukani.class);

    // I've tried multiple different flags to no avail.
    vukaniActivity.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(vukaniActivity);
}

1 个答案:

答案 0 :(得分:6)

你想要的标志是:

vukaniActivity.setFlags( Intent.FLAG_ACTIVITY_NEW_TASK
                       | Intent.FLAG_ACTIVITY_CLEAR_TOP
                       | Intent.FLAG_ACTIVITY_SINGLE_TOP);

另外,请确保您在UI线程上运行。

runOnUiThread(new Runnable(){
  @Override
  public void run(){
    launchApp();
  }
});