我用来连接服务器套接字:
Socket requestSocket.connect(new InetSocketAddress(a, 6666), 3000);
它始终工作得非常好,除非设备处于空闲模式较长时间,比如30分钟左右。 30分钟后,如果我将设备带到唤醒状态,并尝试联系服务器thro'我的应用程序它不会抛出任何异常。这告诉我我的套接字连接处于静止状态。但是当我在服务器端检查时,这里没有收到相同的数据。
答案 0 :(得分:1)
电池方式是使用后台服务和startForground
<li>
即使您的应用已关闭或从最近的应用中移除,此服务也不会暂停/关闭您的套接字连接。
如果要从后台服务
更新UI,可以使用UI中的绑定服务@Override
public int onStartCommand(Intent intent, int flags, int startId) {
onHandleIntent(intent);
return START_STICKY;
}
protected void onHandleIntent(Intent intent) {
if (intent != null) {
Notification.Builder builder = new Notification.Builder(getBaseContext())
.setContentTitle("")
.setContentText("Your content text");
startForeground(1, builder.build());
Socket requestSocket.connect(new InetSocketAddress(a, 6666), 3000);
}
}