yeaaaaah 2019-01-15 17:53 采纳率: 0%
浏览 4250

PendingIntent.send()方法启动Activity和startActivity的区别

监听home键广播启动Activity会延迟5s,但是通过PendingIntent.send()方法启动Activity可以立即启动?查看源码只追到Activity启动会延迟5秒的原因,未追查到PendingIntent
.send()可以立即启动Activity的原因,不知是否有小伙伴解决过这个问题。

private BroadcastReceiver homeKeyReceiver = new BroadcastReceiver() {
        private static final String SYSTEM_DIALOG_REASON_KEY = "reason";
        private static final String SYSTEM_DIALOG_REASON_HOME_KEY = "homekey";

        @Override
        public void onReceive(Context context, Intent intent) {
            if (TextUtils.equals(intent.getAction(), Intent.ACTION_CLOSE_SYSTEM_DIALOGS)) {

                if (TextUtils.equals(intent.getStringExtra(SYSTEM_DIALOG_REASON_KEY), SYSTEM_DIALOG_REASON_HOME_KEY)) {

                    Intent secondIntent = new Intent(FirstMainActivity.this, SecondMainActivity.class);
                    secondIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_NO_ANIMATION
                            | Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
                    PendingIntent pendingIntent = PendingIntent.getActivity(FirstMainActivity.this, 0,
                            secondIntent, 0);
                    try {
                        pendingIntent.send();
                    } catch (PendingIntent.CanceledException e) {
                        e.printStackTrace();
                    }
                }
            }
        }
    };

如果在onReceive方法通过startActivity启动SecondMainActivity,会延时5秒启动。
麻烦告知一下PendingIntent.send()为何能够绕过这个延时5秒的限制,特别感谢。

  • 写回答

1条回答 默认 最新

  • weixin_40415846 2019-08-22 17:38
    关注

    PendingIntent的方式 会使下面这个判断返回true 所以能绕过
    14108 perm = checkComponentPermission(STOP_APP_SWITCHES, callingPid, callingUid, -1, true);
    14109 if (perm == PackageManager.PERMISSION_GRANTED) {
    14110 return true;
    14111 }

    评论

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器