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方法,并在那里记录一些内容,以查看是否调用了它。