【问题分析】界面点击无响应,非ANR
内容提要
用户在点击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'。