是否可以从服务启动活动?如果是的话,我们该如何实现呢?如何从服务启动活动?
回答
android.app.Service
是android.app.Context
的后裔,因此您可以直接使用startActivity
。但是,由于您在任何活动之外开始此活动,因此您需要在意图上设置FLAG_ACTIVITY_NEW_TASK
标志。
例如:
Intent i = new Intent();
i.setClass(this, MyActivity.class);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(i);
其中this
为您服务。
我从服务启动活动时出现问题,这是由于缺少FLAG_ACTIVITY_NEW_TASK意向标志。
不知道,但我可以开始活动直接从服务没有任何标志,它工作正常 – 2017-11-20 07:18:51
这无疑将解决你的问题
Intent intent = new Intent();
intent.setAction(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
ComponentName cn = new ComponentName(this, TaxiPlexer.class);
intent.setComponent(cn);
startActivity(intent);
你好 我有问题当应用程序从服务(FCM) 关闭时开始活动以上代码仅在应用程序已打开时起作用。 请帮我打开应用程序从后台运行服务 – 2016-10-20 09:59:25
即使框架允许你从服务开始的活动,它可能不是一个妥善的解决办法。原因在于服务任务可能是也可能不是用户在服务希望与用户交互时的焦点。中断用户目前正在做的事情被认为是糟糕的设计形式,特别是在应该在后台运行的东西。
因此,您应该考虑使用带通知服务的通知,该通知服务携带PendingIntent以便在用户决定是否需要调查时启动所需的活动。把它想成延迟满足。
- 1. 如何从Android服务启动活动
- 2. 如何从服务中启动活动?
- 3. 从服务启动活动
- 4. 如何在后台启动服务并从该服务启动一项活动?
- 5. 无法从FCM服务启动活动
- 6. 从Android服务启动钛“活动”
- 7. 无法从服务启动活动
- 8. 从后台服务启动Android活动
- 9. Android:服务启动活动
- 10. 如何在重新启动后通过服务启动活动
- 11. 在活动开启时启动服务
- 12. Java Android:如何从Web服务器启动活动?
- 13. 从服务启动对话活动导致'MainActivity'也启动
- 14. 从应用程序启动而不是活动启动服务
- 15. 启动可能从启动时运行的服务活动
- 16. 服务如何与其活动通信?服务如何调用启动该服务的活动中的方法?
- 17. 从服务启动服务
- 18. 从服务启动服务
- 19. 启动在设备启动时启动活动的服务
- 20. 活动从服务
- 21. 如何从其他活动启动启动器活动?
- 22. 如何从以外的活动的活动访问该服务的实例启动服务
- 23. 如何从一项活动启动一项android服务并在另一项活动中停止服务?
- 24. 自动启动AppEngine灵活服务器
- 25. 活动将不会启动服务
- 26. 通过服务重新启动活动
- 27. 启动服务使用活动
- 28. 在ActivityInstrumentationTestCase2活动之前启动服务
- 29. 如何从服务带上活动
- 30. 如何从活动调用服务?
这很好,但每次Activiyt都会像新开始的活动一样开始。这种呼叫只能工作一次。或者我想念什么!? – uzay95 2011-06-20 16:45:39
@MarcinGil你知道这是故意的行为吗?换句话说,你知道谷歌工程师是否设计了服务,以便能够在没有用户交互的情况下打开一个活动,并且该过程总是流畅? – MikeIsrael 2012-05-01 06:44:24
@MikeIsrael我相信是的。试想一下,在后台运行的系统服务无法在来电时显示接受/拒绝活动。既然你是这个服务的开发者,你知道你想要展示什么活动,这一切都取决于你。您可以使用从您的应用程序启动的服务来执行一些操作,例如。在某些触发器上激活应用程序;如通知栏中的更新状态,并点击启动应用程序。 – 2012-05-01 12:04:59