欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Android 点击Home键之后启动Activity会延迟5秒的情况

程序员文章站 2022-07-13 12:40:39
...

就是当通过 home 键将当前 activity 置于后台时,任何在后台startActivity 的操作都将会延迟 5 秒,除非该应用获取了 “android.permission.STOP_APP_SWITCHES” 权限。

关于延迟 5 秒的操作在 com.android.server.am.ActivityManagerService 中的 stopAppSwitches() 方法中,系统级的应用当获取了 “android.permission.STOP_APP_SWITCHES” 后将不会调用到这个方法来延迟通过后台启动 activity 的操作,事实上 android 原生的 Phone 应用就是这样的情况,它是一个获取了”android.permission.STOP_APP_SWITCHES” 权限的系统级应用,当有来电时,一个从后台启动的 activity 将突然出现在用户的面前,警醒用户有新的来电,这样的设计是合理的。

关于此问题的解决方案

1. 获取以下权限

android.permission.STOP_APP_SWITCHES`

2. 通过以下方式启动activity

Intent intent = new Intent(context, TransparentActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);
pendingIntent.send();

传送门 : https://*.com/questions/5600084/starting-an-activity-from-a-service-after-home-button-pressed-without-the-5-seco