3

我很确定 android 服务将是我的终结。最近几天我几乎没有头发了......

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

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

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

LogCat 在这里相当神秘。它确实说明了线程附加失败,然后显示了一个未捕获的处理程序异常,其中包含“Caused by: java.lang.NullPointerException”。

同样,如果我将此调用放在按钮单击内的方法中,我正在做生意,如果它在 onCreate() 中它会失败。活动内部是否有某种方式(假设我的假设是正确的,它需要完全在生成新线程之前加载)以在加载后调用 StartSocketServer(): ala body.onLoad() in html?

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

TIA

4

1 回答 1

3

正如我在您之前的问题中所写:

FWIW,bindService() 是异步的。在您的 ServiceConnection 上调用 onServiceConnected() 之前,您不会有绑定连接。

在您的bindService()通话中,您正在提供一个ServiceConnection对象。onServiceConnected()当服务准备好使用时,将调用该对象。除其他外,这可能是您要填充的地方mService。将您的电话StartSocketServer()拨入onServiceConnected().

于 2010-09-03T15:57:48.577 回答