android-peekService返回null,即使startService不

android-peekService返回null,即使startService不,第1张

概述我正在尝试使用BroadcastReceiver中的Android服务.该服务与BroadcastReceiver驻留在不同的应用程序中.我的理解是,正确的方法是先调用Context#startService,然后调用BroadcastReceiver#peekService.调用startService似乎可以正常工作,因为它返回了预期的ComponentName.但是,当我调

我正在尝试使用broadcastReceiver中的Android服务.该服务与broadcastReceiver驻留在不同的应用程序中.我的理解是,正确的方法是先调用Context#startService,然后调用broadcastReceiver#peekService.调用startService似乎可以正常工作,因为它返回了预期的Componentname.但是,当我调用peekService时,将返回null.对我在做什么错有任何想法吗?

谢谢!这是带有相关部分的代码清单.

// The Service in question is com.tingley.myapp.MyService// Note that this Receiver is in a different applicationpackage 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 @R_301_6836@born(Google AndroID工程师)在this post中所述:“仅调用startService()-您需要为相同的意图调用bindService(),因此系统已为此检索了IBinder”.

总结

以上是内存溢出为你收集整理的android-peekService返回null,即使startService不全部内容,希望文章能够帮你解决android-peekService返回null,即使startService不所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1079338.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存