首先,我想道歉,因为我很确定我需要的所有信息都已经在stackoverflow上了。 问题是,我发现像我这样的情况非常相似,但不完全是这个,所以我想问一下正确的操作方法,为这种情况创建一个最终的“操作方法”,以帮助未来的开发者
我需要编写一个无UI的后台服务,它将从第三方应用程序发送和接收数据(已经存在,我只需要在代码中包含发送/接收与我的服务共享的数据)< / p>
让我们专注于 App - &gt; send - &gt; Service 流程,因为我猜其他方式是相同的
从我在这里收集到的,我必须
在我的BroadcastReceiver的 onReceive()中,我将检查我的 intent.getAction()是否具有我期望的相同字符串(因为广播是系统 - 宽,实际上发送可以拦截他们,对吗?) - 如果是这样,我会做我的生意
问题:
非常感谢您的专业知识,因为这项服务将成为许多机器的关键部分我想确保我这样做是最好的方式,而不仅仅是一些不稳定的make-it-work代码
答案 0 :(得分:1)
根据您希望“发送数据”流程的启动方式,有不同的方法。看起来发送是短暂的 - 所以IntentService是合适的。如果总是来自您活动中的某些用户操作,请调用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/。
是的,服务在app上运行(不依赖于任何活动)线程。完成一项活动与正在运行(已启动)的服务无关 - 该服务将继续运行。如果您希望服务运行(无论如何),您必须在服务中获得唤醒锁。
如果您想从应用内部发送数据(通过服务),只需调用startService()即可。我不确定您是否要求其他应用程序能够通过您的服务发送数据。
请参阅Service vs IntentService或What is the difference between an IntentService and a Service?
必须在清单中定义服务。见http://developer.android.com/guide/topics/manifest/service-element.html和http://developer.android.com/guide/components/services.html 也许您要求更多关于定义启动服务的意图(Purpose of Service Intent-Filter inside Manifest.xml)?