- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是安卓新手,我必须编写一个服务(在不同的进程上)来处理我的互联网通信功能,我查看了一些博客,发现使用 Messenger 我们可以在 Activity 和服务(在不同的进程上)之间进行通信,
我的问题在这里,到目前为止我正在做这样的事情:
private Messenger _commandReceiver = new Messenger(new CommandDispatcher());
public IBinder onBind(Intent intent) {
return _commandReceiver.getBinder();
}
class CommandDispatcher extends Handler {
public void handleMessage(Message message) {
int command = data.getInt("command");
Messenger activityMessenger = (Messenger) data.get("messenger");
switch (command) {
case Command.IS_AUTHENTICATED:
break;
...
}
}
}
但为什么我不应该在 onBind 方法上发送命令变量和 Activity 信使并在那里处理整个事件,这样可以完全删除服务信使并且通信代码更简单,会变成这样
public IBinder onBind(Intent intent) {
Bundle data = intent.getExtras();
int command = data.getInt("command");
Messenger activityMessenger = (Messenger) data.get("messenger");
switch (command) {
case Command.IS_AUTHENTICATED:
break;
...
}
}
我知道这可能是一个非常简单的问题,但我在任何地方都找不到答案,所以如果有人能帮助我,我将不胜感激
最佳答案
你的问题可能在官方文档中得到解决。
正如谷歌所说,
Multiple clients can connect to the service at once. However, the system calls your service's
onBind()
method to retrieve the IBinder only when the first client binds. The system then delivers the same IBinder to any additional clients that bind, without callingonBind()
again.
在 bound-service 中查找
我的建议是在你的 IBinder
中添加 register 方法来区分不同的操作。
关于android - 使用 onBind 方法接收命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14752388/
我正在编写一个带有绑定(bind)服务的基于服务的应用程序,但该服务的 onBind() 方法似乎从未被调用(使用 Toasts 和 Logs 对其进行测试)。 服务: import android.
我有一个远程服务,外部应用程序可以绑定(bind)到该服务。在某些情况下,我可能希望拒绝绑定(bind)。 According to the documentation , Return the co
我是安卓新手,我必须编写一个服务(在不同的进程上)来处理我的互联网通信功能,我查看了一些博客,发现使用 Messenger 我们可以在 Activity 和服务(在不同的进程上)之间进行通信, 我的问
我有一个关于 Android 服务的理解问题。我有一个执行后台 http 操作的服务和一个应该显示这些 http 操作的当前状态的 Activity 。 所以我实现了 Binder 接口(interf
使用 gingerbread 2.3.4 api lvl 10。 我在启动完成后启动服务。为此,我添加了一个启动服务的广播接收器。我在启动器中使用相同的服务。我试图通过向 Intent 添加额外的参数
我遇到了以下情况。我的应用程序中有一项服务。该 Activity 使用 startService() 启动它,以防止它在将来取消绑定(bind)时关闭。然后使用 bindService() 绑定(bi
一旦我开始搜索/过滤我的 recyclerview 列表结果,我就会不断从搜索适配器中的 onBind 方法中获取 IndexOutofBoundsException。这是异常(exception):
我希望只有某些应用程序可以执行绑定(bind)到服务。我可以通过服务中的适当代码阻止某些应用程序绑定(bind)到服务吗?例如,如果服务有一个允许的应用程序列表(即,一个简单的字符串数组及其包名称),
我正在尝试创建一个可绑定(bind)的粘性服务(我需要在后台对该服务持有的某些数据运行潜在的异步操作)。为此,我需要确保 onBind 始终在 onStartCommand 之后运行。有什么办法可以保
onBind() 方法的“绑定(bind)”操作与仅调用 onStartCommand() 有何不同? onStartCommand() “当另一个组件(例如 Activity )通过调用 start
我试图实现一个简单的 RecyclerView 示例,其中的项目交替着色 /image/BFmJi.jpg效果很好 如果没有 Framelayout,我们将获得清晰的着色代码,如第一张图片所示即元素以
警报不会触发,因为缺少 openClose() 函数并引发错误。 如何解除绑定(bind)或更好地删除 onclick 标签? $('.spoilertop').click(function(){
我目前正在使用适配器返回 2 个列表中的项目集,这样: private List mListResponseList; private List mMyEventsList; 现在,MyListRes
在我的应用程序中,我有一个用于播放 MP3 流音乐的服务。我启动它 (startService()) 并连接到它 (bindService()),因此当没有客户端连接时它不会停止。如果播放器暂停,我会
我有一项服务主要管理用于播放播客 的MediaPlayer 实例。一旦 Activity 绑定(bind)到服务,它就可以执行播放、暂停、停止等操作。我使用服务是因为我希望播客即使在 Activity
我的应用程序遇到了一个奇怪的问题。我有一个在后台运行的 LocationService。我管理其生命周期的方式是: 在 onResume 中,每个 Activity 都使用 bindService(i
如果我尝试使用 Context.bindService() 绑定(bind)到服务,并且该服务尚未运行/启动,我是否可以保证 onCreate那个Service肯定会在onBind之前被调用?我找不到
我正在尝试绑定(bind)服务,但 onBind() 总是返回 false。 这是ServiceConnection的代码- private ServiceConnection mConnection
RecyclerView 没有调用 onCreate 或 onBind 或构造函数。没有断点命中或日志。可能是什么原因?可能是什么原因?任何人如何解决这个问题?这是我的代码。适配器: public c
我正在尝试制作一个按钮来更改 Android Lollipop 中的中断过滤器(无、优先级、全部)。当我按下按钮时,日志显示 W/NotificationListenerService[Notif
我是一名优秀的程序员,十分优秀!