В приложении, которое я разрабатываю, есть связанная служба, которая использует соединение через сокет TCP. Требование к службе - поддерживать сокетное соединение некоторое время после завершения последней активности, связанной со службой, скажем, в течение 1 минуты. Это сделано для того, чтобы избежать ненужных переподключений сокетов, когда другое действие подключается к сервису сразу после того, как одно было отсоединено от него.
Я искал и обнаружил похожую проблему ( Служба, перепривязать или вообще не привязана? ), предлагающую использовать запущенную службу, но в текущей архитектуре приложения используются связанные соединения, и я не хотел бы перепроектировать, если не нужно. Поэтому я ищу другие варианты.
У меня вопрос, могу ли я как-то отложить уничтожение связанной службы, или единственный хороший способ - переписать связь с услугой, используя намерения, преобразовав ее, таким образом, в запущенную службу?
public class SocketService extends Service {
private static final String LOG_TAG = SocketService.class.getSimpleName();
@Override
public final IBinder onBind(final Intent intent) {
Log.d(LOG_TAG, "onBind()");
return new LocalBinder<SocketService>(this);
}
@Override
public boolean onUnbind(Intent intent) {
Log.d(LOG_TAG, "onUnbind");
return super.onUnbind(intent);
}
@Override
public void onCreate() {
Log.d(LOG_TAG, "onCreate");
// create socket connection here
// ...
//
super.onCreate();
}
@Override
public void onDestroy() {
Log.d(LOG_TAG, "onDestroy");
// close socket connection
// ...
//
super.onDestroy();
}
// Other socket sending and receiving logic
// ...
//
}
Заранее спасибо за ваше время.