【问题标题】:Start Activity from a Broadcast Receiver从广播接收器启动 Activity
【发布时间】:2023-03-23 13:53:01
【问题描述】:

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

我还希望我的服务在用户停止运行应用程序(应用程序超出前台)后继续运行。我也已经开始工作了。

我面临的问题是当 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);
}

【问题讨论】:

    标签: android android-intent broadcastreceiver


    【解决方案1】:

    你想要的标志是:

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

    【讨论】:

      猜你喜欢
      • 2021-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多