【问题标题】:Intent is very slow to launch a new Activity :(Intent 启动新 Activity 的速度非常慢 :(
【发布时间】:2011-08-16 17:41:43
【问题描述】:

我有一段 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 秒钟。有没有办法加快这个过程?当我有一个仍在运行的应用程序时,甚至需要这么长时间。请帮忙...

【问题讨论】:

  • 您要在哪个应用程序中启动什么活动? Activity 启动时间受 Activity 在其生命周期启动调用期间尝试执行的工作量的影响(onCreate 等)
  • 如果您只是在模拟器中进行测试,活动更改所需的时间比在实际手机上要长得多。特别是在调试模式下。但是按照 adamp 说的做,检查你调用的活动 onCreate 是否有低效的代码。
  • 我有一个发送这个意图的服务,有时,启动应用程序需要很长时间。我注意到如果应用程序正在运行,它会立即启动,所以我想我真的无法控制应用程序在它的 onCreate 方法中需要多少处理。当我的用户选择它以便将其启动到内存中而不实际显示它时,是否有一种方法可以启动用于此意图的应用程序,有点像预取?
  • 我对 ..NEW_TASK 标志也有同样的问题。有什么想法吗?

标签: android components android-intent package flags


【解决方案1】:

Android 似乎故意延迟服务的活动启动在您按下 HOME 按钮后。 (使用 BACK 按钮时一切正常。)甚至发布了https://code.google.com/p/android/issues/detail?id=4536 的问题,但它已经过时了。

我试图在 Android 源代码中搜索延迟的实际实现,但失败了。您可能需要检查以下问题,因为它说明了完全相同的问题并提供了更多见解:Starting an activity from a service after HOME button pressed without the 5 seconds delay

【讨论】:

    猜你喜欢
    • 2014-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-31
    • 2011-10-29
    • 2012-02-25
    • 1970-01-01
    相关资源
    最近更新 更多