从应用程序到服务的通信

2024-04-02

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

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

解决方案1

应用程序:

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) {

    }
}

为了调用服务,应用程序使用对该服务的引用。 该服务是本地服务。 (不是远程服务) 这种方法在所有情况下都有效吗?

解决方案2

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

解决方案 2 可行。示例 1 也能工作吗?与解决方案 2 相比,解决方案 1 的缺点是什么?


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

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从应用程序到服务的通信 的相关文章

随机推荐

  • 如果订阅有效时间少于 3 个月,则暂时删除取消按钮

    我需要一些帮助来暂时删除 我的帐户 内 我的订阅 页面中的取消按钮 我想隐藏取消按钮 直到至少 3 个月后自用户订阅以来 或 90 天 订阅3个月后 取消按钮将再次出现 使用 Woocommerce 与 Woo 订阅和 Woo 会员资格一起
  • 从用逗号分隔的两个表中进行 SELECT 如何工作? (从 T1、T2 选择 *)

    给定 2 个表 T1 和 T2 T1 T2 A 1 B 2 C 3 您提出一个查询 SELECT FROM T1 T2 从该查询中获取的行的编号是多少 a 4 b 5 c 6 d 9 答案是 9 问题 为什么答案是 9 两个表之间的逗号表示
  • MySQL 准备语句 - 如何循环

    我有一个充满 ID 号的表 我需要循环遍历该表 并将其用作准备好的语句中的变量 我不知道是否需要为此使用存储过程 或者常规查询是否可以做到这一点 这是一个简单的例子 SELECT id from var list loop through
  • 创建列表的子类

    我有以下代码 obj lt list list a 4 f 5 g 5 list a 44 f 54 g 54 class obj lt mysubclass class obj 1 class obj 2 class obj 1 2 cl
  • 在jsp中处理浏览器的“后退”按钮

    我有一个jsp搜索页面 Search jsp 和一个结果页面 Result jsp 它们都可以选择搜索条件 然后将参数传递给java控制器文件 Controller java 以构建查询字符串并执行查询搜索 查询字符串和搜索结果将传递到 R
  • 将文件名与文件夹名匹配,然后移动文件

    我有名为 a1 txt a2 txt a3 txt a4 txt a5 txt 等的文件 然后我有名为 a1 1998 a2 1999 a3 2000 a4 2001 a5 2002 等的文件夹 例如 我想在文件 a1 txt 和文件夹 a
  • 当应用程序进入后台时,约束会重置 - iOS 13

    我通常设置了视图的前导 尾随约束 我已将其高度设置为静态 325 对于底部约束 我设置了 2 个约束 1 主视图的底部约束为视图的底部约束 2 主视图的底部约束到视图的顶部约束 现在 根据用户的操作 我仅显示带有动画的隐藏视图 因此 当视图
  • VBA 中的“Dim fso、MyFile、FileName、TextLine”是什么?

    我从这里的一位好人那里收到了这段代码 他们愿意花时间和精力与菜鸟分享他们的知识 Sub ReadLinesFromAFileOneAfterAnother Const ForReading 1 ForWriting 2 ForAppendi
  • iOS 7.0及以上版本的iOS设备的唯一标识

    寻求您的帮助 我在获取时遇到问题设备标识符 实际上我正在使用 UIDevice IdentifierAddition h NSString MD5Addition h 类来获取 Identifier 但其为我的所有设备返回相同的标识符 i
  • symfony 2根据数据库中存储的用户首选项设置区域设置

    我试图根据存储在数据库中的当前用户的首选项来设置区域设置 因此 我们的 User 类有一个 getPreferredLanguage 它返回一个区域设置标识 en fr FR 等 我考虑过以下方法 注册订阅 KernelEvents REQ
  • 在用户拒绝使用定位服务后,如何提示用户打开定位服务

    我有一个具有显式用户交互的应用程序 它利用用户的当前位置 如果用户拒绝访问位置服务 我仍然希望后续使用能够提示用户转到设置并重新启用我的应用程序的位置服务 我想要的行为是内置地图应用程序的行为 在 设置 gt 常规 gt 重置 gt 重置位
  • 绘图中 x 轴上的时间

    我的 x 轴值采用以下格式 May 23 2018 06 31 52 GMT May 23 2018 06 32 02 GMT May 23 2018 06 32 12 GMT May 23 2018 06 32 22 GMT May 23
  • 简单视差、CSS 图层、滚动时显示最后一部分

    我最近在网络世界中看到了一个非常酷的效果 这就是 层次感 用户将向下滚动页面 最后一部分将出现在页面的前几个部分下方 有时它带有图像 但我发现内容也可以这样显示 现在 我已经很熟悉了z index和 CSS 定位 然而 我似乎无法找到正确的
  • Xcode 13.1 bug 将依赖项编辑为本地

    刚刚升级到 Xcode 13 1 并通过单击具有一些依赖项的 Package swift 文件打开了一个 SPM 项目 在以前的版本中 我可以通过将包的本地克隆拖到项目导航器中来简单地编辑这些依赖项之一 然后 Xcode 将忽略签出的依赖项
  • 如何用两种颜色填充绘图上的单个“pch”点?

    如果您采用下面的代码 如何更改第三个菱形的填充 使其变为半黑 半白 该解决方案适用于任何颜色 data lt c 1 2 3 plot data pch c 23 18 23 cex c 2 5 3 2 5 The pch字符是实际的字体符
  • 如何最小化 Flutter Web 版本的大小?是否需要通知文件?

    My web构建 Flutter Web 应用程序后 我的 Flutter Web 应用程序的文件夹大小达到 5 4MB 这还不错 但我不妨优化一下 我想知道是否有人有任何明显的提示 删除不必要的包 之外的提示 以最小化文件大小 我将在 F
  • setcookie 由于标头而无法正常工作 WordPress

    我有一个 WordPress 插件想要创建 cookie 但它不起作用 我真的很感激帮助 add shortcode watchlist cwatchlist short function cwatchlist short echo div
  • htaccess 加载页面 B 而不是页面 A,无需重定向

    使用 htaccess文件 如何加载page B when page A已加载 我不想更改 URL 它仍然应该显示page A 示例 用户负载www mysite com contact并得到结果www mysite com contact
  • bash 中有 do-while 循环吗? [复制]

    这个问题在这里已经有答案了 有没有do whilebash 中循环 我知道如何编程while在 bash 中循环 while condition do body done 是否有类似的构造 但是对于do while循环 其中body至少执行
  • 从应用程序到服务的通信

    我想从我的 Android 应用程序到我的 Android 服务进行通信 我有两个选择 但我不知道该选择哪个 使用应用程序注册服务 使用 LocalBinder 从应用程序连接到服务 解决方案1 应用程序 public class MyAp