android - 从应用程序到服务的通信

标签 android service

我想从我的 Android 应用程序与我的 Android 服务进行通信。我有两个选择,但我不知道该选择哪个:

  1. 向应用程序注册服务
  2. 使用 LocalBinder 从应用程序连接到服务。

解决方案一

应用:

public class MyApplication extends Application {

    MyService myService;

    public void setMyService(MyService myService) {
        this.myService = myService;
    }

    public void testCallService(){
        myService.sendResponseApdu("test".getBytes());
    }
}

和服务:

public class MyService extends HostApduService {

    @Override
    public void onCreate() {
        super.onCreate();
        ((MyApplication)getApplication()).setMyService(this);
    }

    @Override
    public byte[] processCommandApdu(byte[] commandApdu, Bundle extras) {
        return new byte[0];
    }

    @Override
    public void onDeactivated(int reason) {

    }
}

要调用服务,应用程序使用对服务的引用。 该服务是本地服务。 (不是远程服务) 这种方法是否适用于所有情况?

方案二

使用带有 ServiceConnection 的 LocalService 方法绑定(bind)到符合 http://developer.android.com/reference/android/app/Service.html#LocalServiceSample 上示例的服务

解决方案 2 将起作用。示例 1 也可以吗?与解决方案 2 相比,解决方案 1 的(缺点)优势是什么?

最佳答案

根据官方 android 文档,服务旨在在后台执行长时间运行的操作,如果服务和 Activity 之间存在大量交互,他们建议使用绑定(bind)服务。使用绑定(bind)服务的原因是绑定(bind)具有丰富的通信接口(interface)的优势。

https://stackoverflow.com/a/5066187/2839624

我正在开发一个类似的应用程序,出于同样的原因,我选择了绑定(bind)服务,通过接口(interface)从 Activity 到服务进行通信,并使用 Localbroadcastreceiver 将事件从服务到 Activity 进行通信。

关于android - 从应用程序到服务的通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25863990/

相关文章:

Android 谷歌服务位置成本和限制

.net - 有人可以帮我记忆一下这个框架/技术叫什么吗?

java - 从后台服务启动 Android Activity

android - 加载TextureAtlas后,有一段时间帧率较低

java - F 点与 X 成 90 度

android - 如何按列过滤Android数据库

android - 服务已启动但未显示在设置 -> 正在运行的服务中

c# - 将命令行参数添加到服务安装程序 c#

java - 如何在 Android 应用程序中实现应用内计费?

java - 在带有 aSmack 的 XMPP 中使用 UserSearch 时,getSearchForm 返回 null