2012-07-23 51 views
1

如何自行启动服务? 我不想从另一个活动启动该服务,但我想绑定到该活动的服务。我的问题与此链接中描述的完全相同。 onServiceConnected never called after bindService method 即我的onserviceconnected永远不会被调用。onserviceconnected从未叫过:android

Messenger mService = null; 
public void onServiceConnected(ComponentName className, IBinder service) { 
      mService = new Messenger(service); 
      Log.d("IMSLogging", "inside onServiceConnected"); 
     } 

从OnCreate中我的活动我打电话bindService.but我收到的时候我在做什么mService.send(MSG)NullPointerException异常的;从OnCreate中(该bindService叫,当然后。)虽然bindService被返回true,

+0

我相信我已经发布了代码。问题是,即使我从oncreate方法调用bindservice后,mService仍然为null。同样,我在代码中提到的log.d也从未在日志中找到过。 – scooby 2012-07-23 11:58:35

回答

2

你不能叫mService.send()直到后,你会得到onServiceConnected()回调。这意味着您不能在onCreate()中同时执行bindService()mService.send()。您需要将mService.send()呼叫转移到onResume()onServiceConnected()或其他地方。

+0

即使我也在考虑这一点。但所有这些都发生在onclick上一个button.and setonClickListener和onCreate等等。它们仅在onCreate中定义。然后我转移每件事? – scooby 2012-07-23 12:03:26

+1

你可以发布你的代码,我可以帮助你更多。然而,你应该可以在'onCreate()'中设置你的用户界面,你只有在** onServiceConnected()'回调之后**才能使用该服务。 – 2012-07-23 12:27:00

+0

嘿,谢谢,我解决了它。实际上我是在onclick监听器中调用onBind。谢谢。 :) – scooby 2012-07-23 14:00:19

相关问题