从广播接收器启动活动

Gav*_*ler 2 android broadcastreceiver android-intent

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

ABe*_*oon 6

你想要的标志是:

vukaniActivity.setFlags( Intent.FLAG_ACTIVITY_NEW_TASK
                       | Intent.FLAG_ACTIVITY_CLEAR_TOP
                       | Intent.FLAG_ACTIVITY_SINGLE_TOP);
Run Code Online (Sandbox Code Playgroud)

此外,请确保您在UI线程上运行.

runOnUiThread(new Runnable(){
  @Override
  public void run(){
    launchApp();
  }
});
Run Code Online (Sandbox Code Playgroud)