【问题标题】:finish background activity from broadcast receiver从广播接收器完成后台活动
【发布时间】:2016-10-08 02:13:15
【问题描述】:

我在键盘锁定时启动了一个新活动“ActivityB”。(在键盘锁定之前,ActivityA 已被后台处理)。 ActivityB 在 30 秒后超时并且应该自行关闭,所以我在 30 秒后调用了完成,虽然不可见,但在我解锁后我在后台看到 2 个单独的应用程序/活动。 所以我用 Intent.ACTION_USER_PRESENT 广播接收器完成了activityB,还是不行。

Manifest.xml

  <receiver
            android:name="com.example.reciever.UnlockReceiver">
            <intent-filter>
                <action android:name="android.intent.action.USER_PRESENT" />
            </intent-filter>
        </receiver>

解锁接收器: 公共类 UnlockReceiver 扩展 BroadcastReceiver {

@Override
public void onReceive(Context arg0, Intent intent) {
        if (ActivityB.b != null) {
            ActivityB.b .finish();
        }
}

}

活动B:

private Activity b;
onCreate() {
b= this;
}

ActivityB 在我们收到推送时启动:

Intent pushIntent = new Intent(context.getApplicationContext(), ActivityB.class);
                pushIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);

我在解锁设备时看到 onReceive 调用正常,但它没有在后台结束 ActivityB。因此,我在后台看到了 2 个相同的应用程序

【问题讨论】:

    标签: android android-background


    【解决方案1】:

    您可能在活动 a 中具有创建活动 b 的意图;

    【讨论】:

    • 我在 30 秒后调用完成,它似乎不起作用。 ActivityB是基于pushnotification启动的,我用的是CLEAR TASK,好像没有清除ActivityA
    • 尝试在后台服务中实现那个明确的任务
    • 看起来像设置 android:launchMode="singleTop" 解决了这个问题
    【解决方案2】:

    在我在清单文件中设置以下属性后,问题已得到解决 android:launchMode="singleTop"

    【讨论】:

      猜你喜欢
      • 2011-11-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多