首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在没有5秒延迟的情况下按下主页按钮后,从服务启动活动

在没有5秒延迟的情况下按下主页按钮后,从服务启动活动
EN

Stack Overflow用户
提问于 2011-04-09 03:47:27
回答 4查看 20.7K关注 0票数 43

我遇到了这个安卓问题中描述的问题:http://code.google.com/p/android/issues/detail?id=4536

简单地说,在按下HOME键后,安卓会在5秒内阻止服务和广播接收器调用startActivity。

我还注意到(好吧,理论上),拥有以下权限:

代码语言:javascript
复制
"android.permission.STOP_APP_SWITCHES"

允许调用resumeAppSwitches (在ActivityManagerService中定义)。看看最新版本的ActivityManagerService,这段代码被删除了。

问题:如何在没有5秒延迟的情况下使用startActivity启动活动?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-04-09 03:57:04

我不认为有一种方法可以用当前的API做到这一点。我认为这就是他们想要的工作方式,这样当用户按下Home键退出时,应用程序就不会强迫自己重新打开。您可以将home/ launcher意图添加到筛选器中,用于您尝试启动的任何活动。然后,用户可以选择基本上将该应用程序视为主屏幕。然后,每当用户按下主页按钮时,它就会毫无延迟地启动(他们必须从弹出的列表中选择它,该列表将询问他们想使用哪个应用程序来完成此操作,但他们可以选中always use this app以在将来取消此步骤。)

票数 17
EN

Stack Overflow用户

发布于 2017-03-21 02:56:56

这是我找到的一个解决方案。

将您希望立即启动的意图放在PendingIntent中,然后对其调用send()方法。

所以不是这样

代码语言:javascript
复制
Intent intent = new Intent(context, A.class);
                intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                context.startActivity(intent);

就这么做吧

代码语言:javascript
复制
Intent intent = new Intent(context, A.class);
                intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                PendingIntent pendingIntent =
                        PendingIntent.getActivity(context, 0, intent, 0);
                try {
                    pendingIntent.send();
                } catch (PendingIntent.CanceledException e) {
                    e.printStackTrace();
                }
票数 54
EN

Stack Overflow用户

发布于 2011-04-19 00:05:50

我也对这个“功能”以及如何避免它很感兴趣。阅读这篇文章:http://code.google.com/p/android/issues/detail?id=4536 (阅读评论#10)。

我引述有关部分如下:

解决方法包括:

1)不要使用activity,一切都从服务做起。

2)拥有某种中间主页(WidgetLocker HomeHelper、QuickDesk、PowerStrip等)。它们立即执行startActivity来启动“真正的”Home,这绕过了5秒的规则。这是一个坏主意,因为Android优先将系统Home保存在内存中,而不是中间设置的第二个Home。因此,这可能会导致启动程序重新加载,这并不有趣。此外,这对用户来说非常令人困惑。

3) Root可以在这段时间内启动活动。

其中,我认为最好的方法是创建一个"Home Helper"-like activity。因此,您可以调用此活动来代替,而不是启动一个新的活动。这一点尤其正确,因为您正在创建一个启动器应用程序。

正如我在之前对这个问题的评论中所说的,我会就此与WidgetLocker开发人员联系。或者,您可以使用APK管理器来查看他是如何实现它的(他甚至鼓励使用APK管理器为他的应用程序创建不同的mods,上面的评论中提供了指向xda-developers线程的链接)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5600084

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档