gpt4 book ai didi

android - 我为什么要使用绑定(bind)服务?

转载 作者:太空宇宙 更新时间:2023-11-03 11:16:59 24 4
gpt4 key购买 nike

对于应用程序和服务之间的通信,为什么我要使用绑定(bind)服务而不是在 Intent 中发送数据:

mServiceIntent = new Intent(getActivity(), RSSPullService.class);
mServiceIntent.setData(Uri.parse(dataUrl));

我读到“如果该服务已经在运行,它将再次使用 onStartCommand() 调用,以传递新的 Intent,但不会创建第二个副本。”这意味着我可以发送影响服务进度的消息,这就是在 google RandomMusicPlayer 示例中所做的:

public void onClick(View target) {
// Send the correct intent to the MusicService, according to the
// button that was clicked
if (target == mPlayButton)
startService(new Intent(MusicService.ACTION_PLAY));
else if (target == mPauseButton)
startService(new Intent(MusicService.ACTION_PAUSE));
else if (target == mSkipButton)
startService(new Intent(MusicService.ACTION_SKIP));
else if (target == mRewindButton)
startService(new Intent(MusicService.ACTION_REWIND));
else if (target == mStopButton)
startService(new Intent(MusicService.ACTION_STOP));
else if (target == mEjectButton) {
showUrlDialog();
}

最佳答案

绑定(bind)到服务而不是向其发送异步消息的原因有很多。一个重要的原因是它可以让您更好地控制服务的生命周期。如果您只是发送由服务处理的 Intent ,服务可能会在消息之间消失——丢失任何内部状态。当 Android 正在寻找可以释放的资源时,绑定(bind)服务会受到特殊对待。

另一个不相关的原因是,如果您绑定(bind)到一个进程内服务,您可以将 IBinder 转换为一个已知类并直接调用它的方法。这为服务提供了一个非常丰富(虽然紧密耦合)的接口(interface)。很难使用通过 Intents 传递的消息来模拟这种丰富的交互。

关于android - 我为什么要使用绑定(bind)服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14985077/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com