gpt4 book ai didi

android - 在 onCreate 上绑定(bind)后立即从 android 服务调用方法

转载 作者:太空狗 更新时间:2023-10-29 12:58:23 31 4
gpt4 key购买 nike

我很确定 android 服务将是我的终结。在过去的几天里,我几乎没有头发了....

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

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

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

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

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

请帮我留住剩下的头发:)

TIA

最佳答案

正如我在您的 earlier question 中所写:

FWIW, bindService() is asynchronous. You will not have a bound connection until onServiceConnected() is called on your ServiceConnection.

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

关于android - 在 onCreate 上绑定(bind)后立即从 android 服务调用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3637221/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com