Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android,当活动破坏时,套接字会关闭吗?_Android_Sockets - Fatal编程技术网

Android,当活动破坏时,套接字会关闭吗?

Android,当活动破坏时,套接字会关闭吗?,android,sockets,Android,Sockets,服务代码: public class AlarmListeningService extends Service{ public static final String sHost = "*.*.*.*"; public static final int sPort = 5566; Thread thrSocket; @SuppressWarnings("deprecation") public void onStartCommand(Intent intent, int startId) {

服务代码:

public class AlarmListeningService extends Service{
public static final String sHost = "*.*.*.*";
public static final int sPort = 5566;
Thread thrSocket;

@SuppressWarnings("deprecation")
public void onStartCommand(Intent intent, int startId) {
    super.onStartCommand(intent, startId, startId);
    thrSocket = new thrSocket();
    thrSocket.start();
}


@Override
public IBinder onBind(Intent arg0) {
    // TODO Auto-generated method stub
    return null;
}

class thrSocket extends Thread {
    Socket mSocket;

    public void run() {

        InitSocket();

        new Thread(){  
            public void run() {
                try {
                    String msg = "";
                    while (true) {
                        int count = 0;  
                        while (count == 0) {
                             count=ips.available();
                        }
                        byte[] serverdata = new byte[count];
                        ips.read(serverdata);

                    }
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }  
            } 
        }.start();  
    }

    private void InitSocket(){
        try {
            mSocket = new Socket(sHost,sPort);
            OutputStream out=mSocket.getOutputStream();
            byte[] b_client = "client".getBytes(Charset.forName("UTF-8"));
            out.write(b_client);
        } catch (UnknownHostException e) {
            // TODO Auto-generated catch block
        } catch (IOException e) {
            // TODO Auto-generated catch block
        }
    }
}
}
活动代码:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

        Intent startAL = new Intent();
        startAL.setClass(MainActivity.this, AlarmListeningService.class);
        startService(startAL);
}
我的问题是,当我销毁活动时,服务中的套接字是否会关闭 在套接字服务器上观察

套接字服务器也会在几秒钟到几十秒钟内重新连接


当我销毁活动时,如何让套接字不关闭

活动销毁后服务是否立即关闭?我认为服务没有关闭。因为在活动中没有重新启动服务的代码,套接字将在几秒钟内重新连接。但我确信在socket服务器上观察到活动破坏后,socket会立即关闭,服务器会说socket Disconnect尝试覆盖服务的onDestroy方法,并在那里记录一些内容,以查看是否调用了它。