【问题分析】界面点击无响应,非ANR

💡 原文中文,约5400字,阅读约需13分钟。
📝

内容提要

用户在点击Message界面时无响应,但不会发生ANR。经过log分析发现后台Activity发动策略限制了发动,且发动的Activity与预期不符。问题有两个疑问点:后台BAL策略限制了Message的发动,以及如何发动"com.google.android.apps.messaging/.main.MainActivity"。通过调试发现,通过接收短信后点击Notification可以发动"com.google.android.apps.messaging/.main.MainActivity"。最终复现问题的步骤为:将Message对应的Task从Recents中移除,接收短信后点击Notification跳转到短信,然后回到Launcher进入Phone,通过点击"Send a message"跳转到Message,再次回到Phone后通过左滑切换到Message界面,发现界面无法点击。该问题为Google原生问题,在Pixel上也能复现。

🎯

关键要点

  • 用户点击Message界面无响应,但不发生ANR。

  • 后台Activity发动策略限制了Message的发动,导致BAL_BLOCK。

  • 首次发动'com.google.android.apps.messaging/.main.MainActivity'的方式不明确。

  • 通过接收短信后点击Notification可以成功发动'MainActivity'。

  • 复现问题的步骤包括移除Message的Task、接收短信、点击Notification、进入Phone、再返回Message。

  • 问题为Google原生问题,在Pixel设备上也能复现。

延伸问答

为什么点击Message界面时没有响应?

点击Message界面时没有响应是因为后台Activity发动策略限制了Message的发动,导致BAL_BLOCK,但不会发生ANR。

如何复现Message界面点击无响应的问题?

复现步骤包括:移除Message的Task,接收短信后点击Notification,进入Phone,再返回Message,最后通过左滑切换到Message界面。

什么是BAL_BLOCK?

BAL_BLOCK是指后台Activity发动策略限制了某个Activity的启动,导致无法正常发动Message。

如何成功发动'com.google.android.apps.messaging/.main.MainActivity'?

可以通过接收短信后点击Notification来成功发动'com.google.android.apps.messaging/.main.MainActivity'。

该问题是否只在特定设备上出现?

该问题为Google原生问题,在Pixel设备上也能复现。

为什么在不同情况下会出现不同的Activity?

在不同情况下,调用的Intent不同,可能导致启动的是'com.google.android.apps.messaging.ui.ConversationListActivity'而非'com.google.android.apps.messaging/.main.MainActivity'。

➡️

继续阅读