【问题标题】:Service starts activities from different Apps服务从不同的应用程序启动活动
【发布时间】:2017-06-27 09:11:34
【问题描述】:

我开发了两个使用相同服务的应用程序(将来可能会更多)。当我启动其中一个应用程序时,他们应该启动服务(如果尚未启动)并发送活动名称以告诉服务该应用程序可用。

该服务位于第三个项目中,该项目在应用程序中作为库实现。该服务在后台侦听事件并启动其中一个应用程序。

现在的问题是,我如何启动服务。

我已经尝试过 startService 和 bindService:

启动服务:

Intent intent = new Intent(this.getApplicationContext(), DriverBackgroundListener.class);
        intent.putExtra("className", "com.example.testProject.Activity1");
        this.startService(intent); 

为两个应用启动一个新服务,因为该服务不在同一个应用中。所以 2 个服务正在运行并监听相同的事件。

绑定服务:

我在 Messenger 的帮助下实现了它。 (https://developer.android.com/guide/components/bound-services.html)

这里的问题是,只有至少一个活动绑定到服务时,服务才会运行。但我需要完成活动,以便用户可以正常使用设备。但这将取消绑定服务并将其关闭。

我还必须在重新启动后运行服务。但我想如果我创建一个在设备启动后启动活动的 BroadcastReceiver 会起作用。

有人知道如何处理这个问题吗?

感谢问候

法比安

【问题讨论】:

  • 使用START_STICKY 标志启动服务,这将使服务保持运行。是的,您可以在设备启动时使用广播接收器启动服务。

标签: android android-activity service bindservice


【解决方案1】:

如果您启动服务,然后使用标志 0 绑定到它,即使您断开与它的连接,它仍然可以工作。您可以尝试先连接到服务并检查onServiceConnected(),如果没有启动服务。也可以看看 AIDL https://developer.android.com/guide/components/aidl.html

【讨论】:

  • 谢谢。现在它起作用了。首先我检查它的服务正在运行。如果没有,我使用 startService 启动服务。如果它正在运行,我将它绑定在带有标志 0 的活动上。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多