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 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘