问题标签 [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 投票
3 回答
924 浏览

android - 如何将数据从服务类发送到主要活动类?

我正在开发一个名为 Call recorder 的 android 应用程序。录制是在后台运行服务类中完成的。现在如何接收从服务类到主要活动类的呼叫信息以显示在 UI 上?

0 投票
8 回答
76075 浏览

android - Android java.lang.IllegalArgumentException:服务未注册

我有一个看起来像这样的设置:

但是,我仍然不时看到标题中的错误:被调用java.lang.IllegalArgumentException: Service not registered时生成。unbindService()我错过了什么愚蠢的事情,还是还有更多的事情发生?我应该注意,可能存在不止一个相同的片段。

编辑

由于实际上似乎没有人在阅读代码,所以让我解释一下。 除非服务被绑定 ( )并且在之前可能unbindService()调用. Context.unbindService(ServiceConnection)mBoundonServiceDisconnected(...)unbindService()

请记住,在任何情况下,Android 会为您取消绑定您的服务,以使服务变为未绑定但不会调用 onServiceDisconnected 从而使我处于陈旧状态?

另外,我正在使用我的应用程序上下文进行初始绑定。假设类似:

0 投票
1 回答
1049 浏览

android - Android:如何判断绑定服务何时被销毁?

我有一项服务绑定到几个活动,每个活动都使用ServiceConnection.

每个活动都需要在调用服务之前检查服务是否已在使用中。因此,在服务中,我有一个函数(比如说getCurrentId()),它返回服务当前正在执行的操作的详细信息。然后在客户端活动中,建立服务连接:

一个按钮切换到服务的绑定:

和解绑:

我根本不打电话startService()

在绑定到服务之前,我检查它是否已经处于活动状态以及它在做什么:

问题是,如果一个活动绑定到服务然后解除绑定,onDestroy()则调用服务方法(我已经登录它以确认这一点),这很好。 但这不会触发onServiceDisconnected()。_

所以 mService 永远不会设置为 null,当我到达那个 if 语句时,它会愉快地继续并调用getCurrentId(),它会返回之前的任何细节。

我认为onServiceDisconnected()只有在服务正在运行的线程被意外终止时才应该调用它,所以当服务被销毁时不调用它是正确的,因为最后一个活动使用它解除绑定。

据我所知,该服务没有被重新实例化,我已经在整个过程中进行了日志记录。

这给了我两个问题:

是否有替代回调函数或某种方式通知 ServiceConnection 其服务已被解除绑定破坏?

如果服务已经被销毁,那我还怎么调用它的函数呢?还是发生了其他事情 -ServiceConnection或以Binder某种方式返回值而不实际调用服务?

0 投票
0 回答
257 浏览

android - 如何使服务工作思想在andorid中杀死进程力?

我正在通过活动调用启动和停止服务startSertice()/stopService()(当用户选择/取消选择复选框并且服务不受限制时)。即使启动服务的活动已关闭,每件事都运行良好。在“正在运行的应用程序”中,我可以看到 1 个进程、1 个服务正在运行。但是,当我使用Task manager某种应用程序终止应用程序时,进程被终止并且服务无法正常运行,尽管正在运行的应用程序显示0 processes, 1 service. 如何使服务在这种情况下工作?我在其他一些安全应用程序(例如 Avast with )中观察到了同样的情况0 processes, 1 service,而服务工作正常。请帮我解决这个问题。

以下是点击方法的活动

以下是服务类:

在理想情况下一切正常。即使启动服务的活动已关闭,广播接收器也会正确侦听 SCREEN ON 操作。我能够看到应用程序在设置中运行。但是当我使用任务管理器类型的应用程序强制终止进程时,进程被终止并且在运行的应用程序中我能够看到 0 个进程,1 个服务正在运行。尽管在从任务管理器中强制终止应用程序后服务正在运行,但广播接收器并未监听 SCREEN ON 操作。请帮我解决这个问题。

谢谢,JK

0 投票
1 回答
296 浏览

android - android onServiceConnected 绑定服务永远不会被调用

我正在尝试将服务绑定到我的活动并从中获取位置值。

我有以下服务:

GPSService.java

这是 GPSService 扩展的抽象类。这样做的目标是拥有可以概括传感器、gps 传感器、加速度计传感器、任何传感器的东西。

SensorElement.java

现在我有我的活动试图绑定到 GPSService。InSituApp.java

公共类 InSituApp 扩展 Activity{

// buttonGPS = (Button) findViewById(R.id.button1); }

}

这段代码从不调用onServiceConnected里面的方法mConnection。这里有什么问题?onStart 中的 bindService 调用返回 false。这是为什么?

编辑:

清单.xml

0 投票
2 回答
3119 浏览

android - 每个服务绑定都需要一个 ServiceConnection 吗?

我有几个Service要绑定到的Android Activity,因此我可以监视用户的多个操作。

为了能够绑定每个服务,并且我将拥有几个,ServiceConnection我的活动中是否需要几个 private ,如下所示?

或者我是否需要在我的 Activity 和服务之间提供一个管理器类,以便更好地使用和理解有界服务?

0 投票
1 回答
504 浏览

android - 活动尝试与有界服务通信时出现空指针异常

我试图让我的活动与正在运行的后台服务通信,但不断收到 NullPointerException,这没有任何意义.. 至少对我来说。希望其他人能弄清楚问题可能是什么。

首先是我的 LogCat 输出:

我在我的活动中做什么:

就是启动服务并绑定它:

并创建一个服务连接:

然后我有一个按钮的点击监听器来调用我的服务中的方法:

在我的服务中,我这样做:创建一个“ binder”:

我的服务中的方法getMessagesFromUI()(从活动接收字符串)看起来像这样:

当然onBind()方法 os 被覆盖:

我真的希望有人能解决这个问题,因为我现在完全迷路了。如果您需要更多信息,请询问。

编辑:Line 240 (NullPointerException)这是一个:

附加信息:

我在以下地址的 pastebin 上粘贴了一些代码。

TakeNumber 活动在这里: http ://pastebin.com/DxrWfEYM

ServerService 在这里: http: //pastebin.com/7QjiQbTi

我还在代码中插入了“syso”以了解发生了什么。这是之后的 logcat 输出:

当我尝试向服务发送数据时,调用按钮后应用程序崩溃。

0 投票
1 回答
585 浏览

android - 构建一个轮询 REST 服务并将数据发送到活动的 Android 服务

我是一名 .Net 开发人员,正在开发我的第一个 Android 应用程序。我在学习曲线上苦苦挣扎,我希望有人能给我推动正确的方向;我发现很多教程不太适合我想做的事情,而且我很难把一些东西拼凑起来。

我正在开发一个在概念上非常类似于 RSS 阅读器的应用程序。它显示项目列表,单击一个项目会显示项目详细信息。我有这个工作并使用虚拟数据。

真实数据将来自 REST 服务。像 RSS 阅读器一样,我希望我的应用程序定期轮询并使用最新数据刷新自身。它还将有一个刷新按钮,以便用户可以在轮询周期之间按需刷新。

即使用户没有手动启动应用程序,我也希望它轮询;很像 Twitter 或 Facebook 应用程序。在这种情况下,当找到新数据时,会显示一个通知,点击通知会启动应用程序,用户会在其中找到新找到的数据等待查看。

我需要一个在设备启动时运行的服务。该服务将定期轮询 REST 服务。当它发现新数据时,它会抛出通知,该通知将被配置为启动应用程序。

认为该应用程序将与服务通信以接收大量新数据。我认为该应用程序还可以与服务通信以告诉它按需轮询(如果用户希望刷新)。

我敢肯定,对于有一点经验的人来说,这是普通的东西,但对我来说,这在这一点上相当令人生畏。我只需要一个大纲,我需要把它放在一起。指向与我正在尝试做的事情非常匹配的任何教程的指针将是一个加号。谢谢!

0 投票
1 回答
1679 浏览

java - 使用 Android Binder 类有什么意义?

文档说:

如果您的服务仅由本地应用程序使用并且不需要跨进程工作,那么您可以实现自己的 Binder 类,为您的客户端提供对服务中公共方法的直接访问。

但鉴于服务与客户端在同一进程中运行,因此可以使用任何线程安全结构(如 ConcurrentLinkedQueue)交换数据。

0 投票
2 回答
1405 浏览

android - 将消息发送到服务而不绑定它

我通过Service在 android 中扩展创建了一项服务,我正在使用and发送Message到服务。MessengerHandler

但是问题(尽管这是一种常见的行为)是每当我必须向服务发送消息时,我必须使用bind它,而当我退出活动时,我必须使用unbind它,这最终会破坏服务本身。

我可以通过边缘方法在后台继续运行服务,startService但是有什么方法可以在不使用的情况下将消息发送到服务,bind因为我不想在我停止活动时破坏服务。