意图启动一个新的Activity非常缓慢 :(

9

我有一个与Intent相关的代码片段:

Intent i = new Intent();
        i.setAction(Intent.ACTION_MAIN);
        i.addCategory(Intent.CATEGORY_LAUNCHER);
        i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
                | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
        i.setComponent(new ComponentName(packToLaunch, nameToLaunch));
        startActivity(i);

这基本上是根据我传递给它的包名启动一个新的活动。有时,启动这个新活动需要长达5秒钟的时间。有没有什么方法可以加快这个过程?即使我有一个仍在运行的应用程序,它也需要这么长的时间。请帮忙……


1
你正在尝试启动哪个应用程序中的哪个活动?活动启动时间受到活动在其生命周期启动调用(onCreate等)期间尝试执行多少工作的影响。 - adamp
如果你只是在模拟器中测试,那么活动更改所需的时间比在实际手机上要长得多。特别是在调试模式下。但是像adamp所说的那样,检查你调用的活动的onCreate方法是否存在低效代码。 - Eric
我有一个发送此意图的服务,有时启动应用程序需要很长时间。我注意到,如果应用程序正在运行,则会立即启动,因此我认为我无法控制其 onCreate 方法中所需的处理量。也许有一种方法可以在用户选择应用程序意图时启动该应用程序,以便将其启动到内存中而不实际显示它,有点像预取? - SemperGumbee
1
我也遇到了使用..NEW_TASK标志的相同问题。有什么想法吗? - stdout
1
这个回答解决了你的问题吗?在HOME按钮按下后立即从服务启动活动而不需要5秒延迟 - Sam
1个回答

7

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接