Android Framework--Netflix 按键起机,断开蓝牙遥控器连接,会自动拉起 Netflix

问题描述:

盒子真待机,然后按 Netflix 按键起机,开机后进入 Netflix 页面,然后按 back 键,回到 launcher 页面,然后进入 setting,找到蓝牙连接,断开遥控器配对,这时候自动弹出遥控器配对界面,按方向下键,会自动启动 Netflix。

排查方向:

1、先查看是哪个进程拉起来的 Netflix 的 Activity
2、确定是不是接收到遥控器的 Netflix 按键信号拉起的 Netflix
3、进入拉起进程的 app 代码中,找启动 Netflix 的 intent。
4、分析逻辑。

第一步排查方法:

在 Activity 启动流程加打印。
Activity 启动流程
在 ATMS 中的 startActivity()方法中,打印调用方的 packageName 和 intent 内容。

第二步排查方法:

1、执行下面命令,然后选择遥控器
getevent -lt
2、执行下面命令进行检测
getevent -lt <输入设备节点>
getevent -lt /dev/input/event1

问题原因:

com. xxx 里面的 Netflix Service 会在收到开机广播后启动,并根据节点的值决定是否启动 Netflix。正常操作,按 Netflix 按键启动盒子,节点的值会被写为 xxx。然后去 setting 中将遥控器进行解配对,这时候 com.xxx 中的 BroadcastReceiver 监听到遥控器状态从连接变为未连接,会发送一个启动 Activity 的 intent。由于这个 Activity 不存在,导致 com.xxx 进程 Crash。进程随之重启,Service 也随之重启。重新执行了 Service 的 onCreate()方法,拉起来了 Netflix。

解决方案:

规避 com.xxx 进程的 crash。删除 发送启动 Activity 的 intent 的相关代码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值