将其绑定到onCreate后立即从android服务中调用方法

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

…无论如何,我离题了.

最初,我花了一点时间让服务绑定到按钮的onclick上,昨天在这里得到了帮助.现在,我实际上希望该服务绑定到活动的onCreate()方法中.那部分没问题,按预期工作.我的服务实际上是将TCP套接字连接到我编写的套接字服务器的套接字服务.如果我从绑定服务mBoundService.StartSocketServer()内单击按钮bingo对该方法进行调用,效果很好.但是我需要它在活动加载时立即启动,因此直接在活动的onCreate()方法内的bindService()调用下.当我在onCreate()内放置启动套接字的调用时,我得到了强制关闭.

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

LogCat在这里相当神秘.它确实说明了有关线程附加失败的信息,然后显示了一个未捕获的处理程序异常,该异常中包含“由…引起的:java.lang.NullPointerException”.

再一次,如果我在按钮单击内将对方法的调用放进去,我就在做生意,如果它在onCreate()中,它就会失败.活动内部是否有某种方式(假设我的假设是正确的,那就是它需要完全加载后生成新线程)以在加载后调用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的地方.将您对StartSocketServer()的调用放在onServiceConnected()中.

相关文章

文章浏览阅读8.8k次,点赞9次,收藏20次。本文操作环境:win1...
文章浏览阅读1.2w次,点赞15次,收藏69次。实现目的:由main...
文章浏览阅读3.8w次。前言:最近在找Android上的全局代理软件...
文章浏览阅读2.5w次,点赞17次,收藏6次。创建项目后,运行项...
文章浏览阅读8.9w次,点赞4次,收藏43次。前言:在Android上...
文章浏览阅读1.1w次,点赞4次,收藏17次。Android Studio提供...