- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在尝试使用来自 BroadcastReceiver
的 Android Service
。 Service
位于与 BroadcastReceiver
不同的应用程序中。我的理解是,执行此操作的正确方法是首先调用 Context#startService
,然后调用 BroadcastReceiver#peekService
。对 startService
的调用似乎工作正常,因为它返回了预期的 ComponentName
。但是,当我调用 peekService
时,返回了 null
。对我做错了什么有什么想法吗?
谢谢!这是包含相关部分的代码 list 。
// The Service in question is com.tingley.myapp.MyService
// Note that this Receiver is in a different application
package com.tingley.myotherapp;
public class MyReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// Start the Service
Intent serviceIntent = new Intent();
serviceIntent.setClassName("com.tingley.myapp", "com.tingley.myapp.MyService");
ComponentName componentNameOfStartedService = context.startService(serviceIntent);
Log.d("", "Started service name: " + componentNameOfStartedService);
// Get an IBinder to the Service
IBinder serviceBinder = peekService(context, serviceIntent);
Log.d("", "Got binder from peeking service: " + serviceBinder);
}
}
Log
语句打印以下内容:
Started service name: ComponentInfo{com.tingley.myapp/com.tingley.myapp.MyService}
Got binder from peeking service: null
最佳答案
peekService() 的文档没有完整描述获得IBinder所需的条件。正如 Dianne Hackborn(Google Android 工程师)在 this post 中解释的那样:“调用 startService()
是不够的——您需要为相同的 Intent 调用 bindService()
,因此系统已检索到 IBinder
”。
关于android - peekService 返回 null,即使 startService 不返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27612646/
我正在尝试从 Service 获取 IBinder,以便在收到来自系统的通知时与该服务进行通信。从我的 onReceive() 方法我正在调用 peekService() 但我得到一个空引用。 我在这
我正在尝试使用来自 BroadcastReceiver 的 Android Service。 Service 位于与 BroadcastReceiver 不同的应用程序中。我的理解是,执行此操作的正确
我正在使用启动服务 startService(new Intent(this, RelayService.class)); 然后服务使用启动警报 AlarmManager am = (AlarmMan
问题 我为 Android 4.3 编写了一个程序,其中包含一个主要 Activity 、一个广播接收器和一个服务。该 Activity 在其 onCreate 方法中绑定(bind)到服务。该 Ac
我是一名优秀的程序员,十分优秀!