Android 安卓服务会阻止吗?

Android 安卓服务会阻止吗?,android,service,broadcastreceiver,Android,Service,Broadcastreceiver,我在我的android应用程序中有一个类,我已在清单中注册为服务和广播接收器。当类从系统接收到“ACTION\u BOOT\u COMPLETED”意图时,该类开始 我的问题是:如果我让类等待套接字连接: class Test extends BroadcastReceiver { Serversocket server = new Serversocket(); Socket s = server.accept(); } 此代码是否会阻止应用程序的所有其他代码执行?是,它将阻

我在我的android应用程序中有一个类,我已在清单中注册为服务和广播接收器。当类从系统接收到“ACTION\u BOOT\u COMPLETED”意图时,该类开始

我的问题是:如果我让类等待套接字连接:

class Test extends BroadcastReceiver {
    Serversocket server = new Serversocket();
    Socket s = server.accept();
}

此代码是否会阻止应用程序的所有其他代码执行?

是,它将阻止主线程。当这部分代码运行时,您可以观察到冻结。最好在后台使用线程或异步任务调用它

它更有可能因
NetworkOnMainThreadException
而崩溃。谢谢apk,这是我的怀疑。在谷歌的快速搜索中,扩展IntentService类似乎是一个不错的选择。如果我实现onHandleIntent()方法,它是否能够捕获系统发送的广播“ACTION\u BOOT\u COMPLETED”意图?@user3369427:“在快速的google搜索中,扩展IntentService类似乎是一条出路”——而不是监听
服务器套接字
。“它是否能够捕获系统发送的广播“ACTION\u BOOT\u COMPLETED”意图?”--否,因为
ACTION\u BOOT\u COMPLETED
是一个广播。欢迎您让现有的
BroadcastReceiver
启动服务。
IntentService
s在队列中依次运行。套接字可能会无限期运行,因此您需要扩展普通的
服务
,并在其中为套接字启动一个新的
线程