我是一名新的Android开发人员,我目前正在创建一个与SIP进行通信的应用程序。我想设置一个后台任务来完成所有与SIP相关的任务,如果可能的话,让它在手机启动时开始。我目前的想法是创建一个Service
并让它从设备启动开始,问题是有两种Services
使用AIDL,另一种使用{{} {1}}。
我想将一些参数传递给我的服务,让它独立于我的主Intent
运行,并能够通知我的主Activity
收到的消息。任何人都可以告诉我如何做到这一点,并指出我可以理解两个Activity
之间的差异的任何好的教程?我读过一本关于Android开发者的书和一些教程,但他们更加困惑我。
答案 0 :(得分:6)
问题是有两种 一个使用AIDL和一个的服务 这是以意图开始的
这是不正确的。您将Intents
与本地服务和远程服务一起使用。您只能将AIDL用于远程服务。
我想传递一些论据 我的服务让它独立运行 我的主要活动,并能够 通知我的主要活动 消息。
要将“参数”传递给服务,您可以通过putExtra()
将Intent
传递给startService()
或bindService()
,将其作为“附加内容”打包。
要“通知我的主要活动收到的消息”,您可以在活动中使用广播Intents
和BroadcastReceiver
,或者您可以通过bindService()
将活动绑定到服务使用监听器对象。
答案 1 :(得分:2)
使用服务。您可以使用AIDL中定义的过程与其进行通信。如果必须通知您申请某些内容,它可以向您的申请发送意图。
如果您希望它在启动时具有某些参数,我会使用首选项管理器存储它们。
我为我的RandyVideos应用程序写了这样的东西(可以从MiKandi免费获得)。
我在后台做了网络服务。主Activity通过AIDL中描述的方法与之通信。如果服务想与活动交谈,则会发送意图。