这篇文章用来分析NFC学习——NFC Enable 过程分析(一) 中setp 3-2:开启一些循环监听的线程服务。处理方法enableDisable().
code路径:packages/apps/nfc/src/com/android/nfc/P2pLinkManager.java,具体看enableDisable()中的处理code:
public void enableDisable(boolean sendEnable, boolean receiveEnable) {
synchronized (this) {
if (!mIsReceiveEnabled && receiveEnable) {
//setp1:启动SnepServer
mDefaultSnepServer.start();
//setp2:启动NdefPushServer
mNdefPushServer.start();
if (mEchoServer != null) {
//setp3:启动EchoServer
mHandler.sendEmptyMessage(MSG_START_ECHOSERVER);
}
}
}
}
Setp1:启动SnepServer,此Server的作用是接收NDEF消息,并把它推送给LLCP(Logical Link Control Protocol).启动SnepServer最后转到其内部类ServerThread去处理,ServerThread继承Thread,具体分析它的run方法。
code路径:packages/apps/nfc/src/com/android/nfc/snep/SnepServer.java
public void run() {
........
while (threadRunning) {
synchronized (SnepServer.this) {
//setp1-1:创建一个服务器端Socket连接
mServerSocket = NfcService.getInstance().createLlcpServerSocket(mServiceSap,
mServiceName, MIU, 1, 1024);
}
......
//接收Socket请求
LlcpSocket communicationSocket = serverSocket.accept();