android - 从广播接收器启动 Activity

标签 android android-intent broadcastreceiver

我有以下适用于 Android 的场景:我有一个应用程序,在启动时会启动一个服务。该服务每 30 分钟检查一次 url。如果它收到特定响应,它会发送一个 Broadcast 应用接收并处理该响应。这种情况对我来说效果很好。

我还希望我的服务在用户停止运行应用程序(应用程序退出前台)后继续运行。我也可以正常工作。

我面临的问题是,当 Activity 收到 Broadcast 消息时,我无法让 Activity 移回前台。我尝试了各种 Intent 组合,但还没有弄明白。我做错了什么?

我的 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);
}

最佳答案

你想要的标志是:

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

关于android - 从广播接收器启动 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9386461/

相关文章:

android - 在 ImageView 上放置一个按钮

android - 没有测试的模块中的 "No tests found"错误

android - 重新启动任务中的所有 Activity

android - android应用开发中如何屏蔽手机号码的来电和短信接收?

android - 将 Asynctask 用作私有(private)类或与广播接收器一起使用?

android - PendingIntent.getBroadcast lint 警告

java - Android Studio 中缺少可绘制文件夹

java - "Unfortunately ' 应用程序 ' has stopped"错误

android - 是否有处理 ACTION_RESPONSE_VIA_MESSAGE 的服务示例

java - 更改去电号码,添加前缀