Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/178.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 安卓服务说明_Android_Service - Fatal编程技术网

Android 安卓服务说明

Android 安卓服务说明,android,service,Android,Service,我是一名新的android开发者,目前正在制作一个应用程序与之通信。我想设置一个后台任务来完成所有与SIP相关的任务,如果可能的话,让它在手机启动时开始。我目前的想法是创建一个服务,并让它在设备启动时启动,问题是有两种服务,一种是使用,另一种是以意图启动 我想将一些参数传递给我的服务,让它独立于我的主活动运行,并能够通知我的主活动。有谁能告诉我如何做到这一点,并告诉我一些好的教程,让我了解这两种服务之间的区别吗?我读过一本关于Android开发人员的书和一些教程,但它们让我更加困惑 问题是有两种

我是一名新的android开发者,目前正在制作一个应用程序与之通信。我想设置一个后台任务来完成所有与SIP相关的任务,如果可能的话,让它在手机启动时开始。我目前的想法是创建一个
服务
,并让它在设备启动时启动,问题是有两种
服务
,一种是使用,另一种是以
意图
启动

我想将一些参数传递给我的服务,让它独立于我的主
活动
运行,并能够通知我的主
活动
。有谁能告诉我如何做到这一点,并告诉我一些好的教程,让我了解这两种
服务
之间的区别吗?我读过一本关于Android开发人员的书和一些教程,但它们让我更加困惑

问题是有两种 一个使用AIDL的服务和一个 这是从一个意图开始的

这是不正确的。您可以对本地服务和远程服务使用
意图
。您只能将AIDL用于远程服务

我想把一些论点传给你 我的服务,让它独立运行 我的主要活动,并能够 通知我的主要活动的传入 信息

要将“参数”传递给服务,可以通过传递给
startService()
bindService()
Intent
上的
putExtra()
将这些参数打包为“额外参数”


要“将传入消息通知我的主要活动”,您可以在活动中使用广播
意图
广播接收器
,也可以通过
bindService()
将活动绑定到服务,并使用侦听器对象。

使用服务。您可以使用AIDL中定义的过程与it进行通信。如果它必须通知您的应用程序某事,它可以向您的应用程序发送意图

如果您希望它在启动时具有某些参数,我将使用首选项管理器存储它们

我为我的RandyVideos应用程序写了这样的东西(可从MiKandi免费获得)


我有一个后台服务,负责网络方面的工作。主活动通过AIDL中描述的方法与it进行通信。如果服务想要与活动对话,它会发送一个意图。

非常感谢,还有一个令人困惑的问题,因为似乎每个人都给出了不同的答案,服务独立于活动运行,即使是本地或远程服务?换句话说,服务始终独立于活动,并作为回退线程运行以执行耗时的任务?如果我错了,请纠正我,但远程(AIDL)服务代码不是同步执行的吗?“服务独立于活动运行,即使它是本地或远程服务?”是的,这只是一个是否在同一进程中的问题。“并作为执行耗时任务的反向线程运行?”只有在设置后台线程时才可以,否则它会像所有活动和其他Android组件一样在主应用程序线程上运行。“如果我错了,请纠正我,但是远程(AIDL)服务代码不是同步执行的吗?”是的。嗨,Commonware,我想知道你的“如果你设置了一个后台线程”部分。。。如果你使用AIDL,你会得到一个存根,所以我想知道如何将这个存根(提供功能)放在一个线程中?@TiGer-你可以让存根启动一个
AsyncTask
来做后台工作,或者将API参数转换成一个对象,然后将它放到工作队列中。以下是后者的一个例子: