屏幕空白后,Java Android套接字会被杀死

时间:2017-10-04 06:10:40

标签: java android sockets

我用来连接服务器套接字:

Socket requestSocket.connect(new InetSocketAddress(a, 6666), 3000);

它始终工作得非常好,除非设备处于空闲模式较长时间,比如30分钟左右。 30分钟后,如果我将设备带到唤醒状态,并尝试联系服务器thro'我的应用程序它不会抛出任何异常。这告诉我我的套接字连接处于静止状态。但是当我在服务器端检查时,这里没有收到相同的数据。

1 个答案:

答案 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);
    }

}