【问题标题】:Launching an application from a service after the homebutton is pressed, takes too long按下主页按钮后从服务启动应用程序需要很长时间
【发布时间】:2014-02-07 16:13:50
【问题描述】:

我使用服务通过手势启动应用程序。 这很好用。但是当我按下主页按钮(无论何时何地)时,从服务启动应用程序(按下主页按钮后)大约需要 2-3 秒。也可以在按下 home 键 2-3 秒后启动应用程序,然后应用程序立即启动。另一种方法是在从服务启动应用程序之前打开一个随机应用程序。那么也就没有延迟了。

总结一下:

在任何时候按下主页按钮后,使用以下代码从服务启动应用程序(按下主页按钮后)大约需要 2-3 秒。按下主页按钮 2-3 秒后启动应用程序会立即启动应用程序。

startActivity(getPackageManager().getLaunchIntentForPackage(item));
Toast.makeText(getApplicationContext(), "TestTest", Toast.LENGTH_SHORT).show(); //just for testing  

Toast-Message(在 startActivity-Command 之后)总是立即显示,因此服务一直在工作,即使在按下 hombutton 之后也是如此。

这个问题真的很奇怪。 homebutten 怎么能“阻塞”服务中的 startActivity-Command 几秒?

有什么想法吗?谢谢

【问题讨论】:

标签: android android-activity android-service android-homebutton


【解决方案1】:

我也有同样的问题。

我唯一设法发现的是等待期是由名为 waitForActivityStart 的线程引起的。如果您使用 ddms 开始方法分析,这就是您可以看到的。

关于它的奇怪之处在于,在那个线程中什么都没有被执行——没有使用 cpu 时间。它只是等待几秒钟 - 或者至少看起来是这样的。

很抱歉我不能提供完整的解决方案,我希望这可以帮助某人继续研究,因为我也被困在这里。

【讨论】:

  • 感谢这个有用的答案。这几天查了很多,发现了一个有趣的链接:stackoverflow.com/questions/5600084/…看来要避免延迟时间不是那么容易的。
  • 我明白了。正如我所描述的那样,这正是发生的事情:这个线程实际上什么都不做,只是等待几秒钟。
【解决方案2】:

不确定,首先将您的活动启动模式设置为单一任务。当您的活动进入后台时,然后调用服务方法再次启动它。

【讨论】:

  • 不太明白您的意思以及这与我的问题有什么共同点?你能详细说明你的想法吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多