在onCreate绑定后立即从android服务调用一个方法

时间:2010-09-03 15:27:16

标签: android service oncreate

我很确定Android服务将成为我的终结。过去几天我几乎没有留下头发....

......无论如何,我离题了。

起初我有一段时间让服务绑定了一个按钮点击,昨天从帮助中解决了这个问题。现在我实际上希望服务绑定在活动的onCreate()方法中。那部分没问题,按预期工作。我的服务实际上是一个套接字服务,用于将TCP套接字连接到我编写的套接字服务器。如果我在一个按钮点击中绑定服务mBoundService.StartSocketServer()的方法调用该方法,宾果游戏,效果很好。但是我需要在活动加载时立即启动它,所以直接在我的活动的onCreate()方法中的bindService()调用下。当我在onCreate()内部调用启动套接字时,我得到一个强制关闭。

此方法(StartSocketServer())生成一个新线程,然后打开该线程上的套接字到我的远程机器。我猜测问题在于活动完全加载之前新生成的线程......不确定。

LogCat在这里相当神秘。它确实说了一些关于线程附加失败的事情,然后显示了一个未被捕获的处理程序异常,其中包含“由:java.lang.NullPointerException引起的”。

同样,如果我把这个调用放在一个按钮点击内的方法中,我“在商业中,如果它在onCreate()中就失败了。在某个活动中是否有某种方式(假设我的假设是正确的)需要在生成新线程之前完全加载)在加载后调用StartSocketServer():html中的ala body.onLoad()?

请帮我保存余下的头发:)

TIA

1 个答案:

答案 0 :(得分:3)

正如我在earlier question中所写的那样:

  

FWIW,bindService()是异步的。在onServiceConnected()之前,您将没有绑定连接   呼叫你的ServiceConnection。

bindService()来电中,您正在提供ServiceConnection个对象。当服务准备好使用时,将使用onServiceConnected()调用该对象。除此之外,这可能是您填充mService的地方。将您的电话转至StartSocketServer()中的onServiceConnected()