问题标签 [android-service-binding]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1399 浏览

android - 对bindService的质疑

我对 Android 绑定服务有一些疑问。指南: http: //developer.android.com/guide/components/bound-services.html ,关于bindService(),说:

但这似乎不正确,因为这里方法的签名是

其中返回的布尔值描述如下:

所以问题是:为什么文档说方法returns immediately without a value?此外,在这里,绑定是通过这种方式完成的:

而且我不明白 的含义mIsBound = true,因为 javadoc 说 bindService() 如果绑定到服务失败,也可以返回 false。所以应该是:

我错了吗?

0 投票
1 回答
329 浏览

android - 是否可以让 Android 应用程序没有任何活动,而只有服务?

如何制作一个不包含Activity作为主启动器但包含服务作为主启动器的应用程序?

0 投票
1 回答
73 浏览

android - onServiceDisconnected() 上的 IBinder 会发生什么?

假设我创建了一个绑定服务,它已经成功绑定并调用了 onServiceConnected()。现在我有一个 IBinder 对象,我想用它进行远程调用。

但是,如果在获取 IBinder 和远程调用之间,服务突然断开,那么 IBinder 会发生什么?它会变为空吗?如果我尝试使用它会抛出异常吗?

此外,如果服务进行大量连接/断开连接,IBinder 对象在每个连接上都是同一个实例,还是不同?

0 投票
1 回答
894 浏览

android - Android,杀死应用程序时服务关闭且没有自动启动

我不知道为什么,但每次杀死我的应用程序时,通知也会被删除并且没有创建服务。它也应该在启动时启动,但似乎没有..

我的清单:

自动启动.java

简单服务.java

飞溅.java

0 投票
2 回答
1401 浏览

android - Android Bound Services:为什么我们要把这个 IBinder 实例转换成一个 IBinder 实例?

Bound Services 的开发者文档中,“创建绑定服务”中的“扩展 Binder 类”给出了以下代码示例。给出了以下代码片段(我已删除不相关的位),其中从其方法Service返回 an :IBinderonBind()

然后在我们的客户端中,我们在 的方法中接收mBinder对象(它是 的实例LocalBinder)。我的问题是,为什么我们要尝试将作为to传入的实例转换为语句中的实例onServiceConnected()ServiceConnectionLocalBinderargumentonServiceConnected()LocalBinderLocalBinder binder = (LocalBinder) service;

0 投票
0 回答
302 浏览

android - 将对象传递给辅助服务中的静态方法


我正在开发一个应用程序,我需要同时为多个项目实现下载机制,为了实现最大效率,我想将它实现为 AIDL 服务但是我有一件我很难理解的事情 - 因为我只能将原语传递给服务并且我需要传递一个接口我可以在静态方法方法中传递接口对象而不在进程中声明它吗?这样,我可以在运行时用实际对象填充对象。

我尝试这样做的原因是因为它已经在服务中使用处理不同事件(错误、取消等)的本地侦听器实现了一半,但是在应用程序获得服务的绑定后,它可以传递不同的 URL下载,所以我需要它来监听不同的事件,以便对不同的事件做出反应(这在某种程度上,监听屏幕将自己作为静态方法上的接口传递给我没有声明的静态方法)

0 投票
1 回答
1491 浏览

android - 杀死时如何自动重启服务?

我已经发布了许多关于该主题的帖子,其中一些作品,但仅在某些设备上。例如,它适用于我的 Nexus 4、带有 cyaogenmod 的 Nexus 5,但不适用于我的小米 Mi2s(果冻梁 4.1.1)

我尝试将其设置为粘性,在销毁时使用警报和广播接收器。但他们俩都没有成功。当我杀死应用程序时,它再也不会醒来。但是在同一设备上,Whatsapp 可以完美运行,即使我杀死它,它也会再次唤醒..

有什么方法可以在不使用 GCM 的情况下做到这一点?

我已经查过的一些链接:

如何自动重启被杀死的服务?

在一段时间后重复运行方法的服务

https://stackoverflow.com/a/21551045/627307

0 投票
1 回答
454 浏览

android - 屏幕旋转后无法从新的 ResultReceiver 修改 UI

我很绝望。情况就是这样:我有一项活动和一项服务。从服务到活动的通信依赖于一个非常简单的 ResultReceiver。

一切正常:活动接收异步消息并成功更新 UI。但是如果我旋转屏幕,我会失去连接:我知道“旧的”ResultReceiver 丢失了,我很好,问题是我创建了一个新的 ResultReceiver 并将其发送到服务。我在创建时这样做:

和服务:

每次旋转屏幕时都会成功打印“REBIND”。serviceReceiver 是我发送东西的地方:如果我将它设置为 null onRebind(但不是 onStartCommand 或 onBind,所以我确定这发生在配置更改之后),当我尝试发送东西时,我会获得一个 nullpointerexception,所以我猜它实际上得到了更新(即从新活动中获取“新”ResultReceiver)。

我不想“保存”旧的 ResultReceiver 并在重新创建活动时“重新连接”它;我可以创建一个新的 ResultReceiver 并将其传递给 onRebind() 服务,该服务将对其进行更新。但它不起作用。

屏幕旋转和重新绑定后,“新”ResultReceiver 的 onReceiveResult() 无法访问 UI - 它更改的内容不会显示。我不知道在哪里寻找错误:在屏幕旋转之前一切正常,所以它必须与服务持有对旧事物的引用有关,我猜。

0 投票
2 回答
1403 浏览

android - IAE:Service.stopSelf 后未在 unbindService 上注册服务

我正在绑定到一个 android 服务,如JavaDoc中所示

有时,Service 停止自身调用stopSelf或被 停止stopService,导致所有客户端未绑定。但是这里的变量bound依然为真,所以onPause会抛出如下异常:

有没有一种简单的方法来检查服务是否仍然绑定和活动?据我所知,onServiceDisconnected这将使绑定保持活动状态(因为它仅在极端情况下调用,服务有望很快重新启动),因此设置bound为 false 将无济于事。

0 投票
2 回答
2086 浏览

android - Android Wear 重启时我的 WearableListenerService 没有启动

我有一个 android 应用程序(除其他外)在 Android Wear 设备上显示通知。

这是通过让 Wear 模块中的一个类扩展 WearableListenerService 来完成的。在 Wear 模块中,我还有一个扩展 BroadcastReceiver 的类。

这里的场景是: - 从 Android Studio 运行应用程序 - 使用手机应用程序,以便在 Wear 设备上显示通知 - 重新启动 Wear 设备

现在我想要的是,如果我让手机显示另一个通知,它应该出现在可穿戴设备上。事实并非如此,因为 WearableListenerService 没有启动……

所以我让 BroadcastManager 监听 ACTION_BOOT_COMPLETED 事件:

在我的清单文件中:

现在的问题是我的应用程序没有收到 BOOT_COMPLETED 操作。我检查了日志,发现手表上的其他侦听器在重启后收到了这个事件,但不是我的。

我看过几篇关于此的帖子,例如 关闭应用程序时未收到 Android BOOT_COMPLETED

我认为这可能与我的问题非常相似。

我的 android wear 应用程序没有用户可以启动的“mainactivity”——它只有监听器服务和接收器。虽然,我很快实现了一个带有启动器意图的主要活动,这样我就可以从手表上的启动器启动应用程序。这根本不影响局势。一旦手表重新启动,它不会显示来自我的应用程序的通知,直到我从 android studio 重新安装它。

所以我错过了一些重要的事情吗?当手表重新启动时,我的 WearableListenerService 是否应该在没有我交互的情况下自行启动?(它没有......)或者它与这是应用程序的开发者版本有什么关系?

(注意:我也尝试过关闭然后启动 - 没有区别)