java - 将数据从 Activity 发送到第三方服务

标签 java android service broadcast

首先,我想道歉,因为我很确定我需要的所有信息已经在 stackoverflow 上的某个地方了。 问题是,我发现与我的情况非常相似,但不完全是这个,所以我考虑询问正确的操作方式,为这种情况创建最终的“操作方法”,以帮助 future 的开发人员

我需要编写一个无 UI 的后台服务,它将从第三方应用程序发送和接收数据(这些应用程序已经存在,我只需包含在代码中即可发送/接收与我的服务共享的数据)

让我们关注App-->send-->Service流程,因为我猜反之亦然

根据我在这里收集到的信息,我必须

  • 创建一个服务,我将在 finish() 之前在 MainActivity 中启动该服务
  • 声明一个IntentFilteraddAction()我的自定义字符串来标识我的操作
  • registerReceiver()我的接收器和我的过滤器

在我的 BroadcastReceiver 的 onReceive() 中,我将检查我的 intent.getAction() 是否具有与我期望的相同的字符串(因为广播是系统的)宽并且实际上发送可以拦截它们,对吗?) - 如果是这样,我会做我的生意

问题:

  1. 首先,这是正确的作案方式吗?
  2. 我的服务与我的 Activity 在同一线程中运行,对吧?那么如果我 finish() 我的 MainActivity 会发生什么?我该怎么做才能让我的服务始终在后台运行?
  3. 在任何我想要发送从我的服务接收的数据的应用程序中,我是否只需创建一个Intent("My_Action")(与我在另一个应用程序上期望的字符串相同) side) 并执行 sendBroadcast(intent)
  4. 我应该使用 Service 还是 IntentService?对于我的情况来说,什么更好?
  5. 我是否必须在 list 中写入任何内容,无论是在我的服务中还是在其他第 3 部分应用中?

非常感谢您的专业知识,因为这项服务将成为很多机器上的关键部分,我想确保我以最好的方式做这件事,而不仅仅是一些不稳定的使它工作的代码

最佳答案

  1. 根据您希望如何启动“发送数据”过程,有不同的方法。看起来发送是短暂的 - 因此 IntentService 是合适的。如果始终来自 Activity 中的某些用户操作,只需调用 startService 即可。如果公开发送,以便其他应用程序(不是您的)可以使用它,请参阅 Create an android service which can be called only by certain apps 。在某些用例中,通过广播启动服务 - 请参阅 https://blog.nraboy.com/2014/10/use-broadcast-receiver-background-services-android/ .

  2. 是的,服务在应用程序(不依赖于任何 Activity )线程上运行。完成 Activity 与正在运行(已启动)的服务无关 - 服务将继续运行。如果您希望服务运行(无论如何),您必须在服务内获取唤醒锁。

  3. 如果您想从应用程序内部发送数据(通过服务),只需调用 startService() 即可。我不确定您是否要求其他应用能够通过您的服务发送数据。

  4. 参见Service vs IntentServiceWhat is the difference between an IntentService and a Service?

  5. 服务必须在 list 中定义。请参阅http://developer.android.com/guide/topics/manifest/service-element.htmlhttp://developer.android.com/guide/components/services.html 也许您想了解更多有关定义启动服务的 Intent ( Purpose of Service Intent-Filter inside Manifest.xml ) 的信息?

关于java - 将数据从 Activity 发送到第三方服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29564609/

相关文章:

java - 无法使用首选项编辑器在单独的类中创建 AlertDialog

c++ - 我的 native Win32 服务是否需要单独的消息文件库?

delphi - 有什么方法可以限制CodeCentral Web服务返回多少项目

java - 将 Spring XML 上下文移至 Groovy

android - 如何解码样本大小不等于 2 的幂的位图?

java - 网络 3 : websockets with SSL on Android

android - 如何将半圆蒙版应用于 ImageView

java - 媒体播放器和服务类

java - 使用 CORBA 连接客户端(在 VirtualBox 上)和服务器(在本地主机上)- org.omg.CORBA.BAD_PARAM :

java - 为什么我的属性在这个camel sftp 路由中没有解析?