Для моего друга, который является глухим и слепым, я пытаюсь создать приложение (для умных часов и телефона), которое предупреждает его, когда кто-то звонит в дверной звонок.Умные часы будут вибрировать, и таким образом он узнает, что кто-то находится перед дверью.
Чтобы узнать, звонит ли кто-нибудь в дверной звонок, я создал сервер, который отправляет сообщение на телефон через разъемы.Телефон будет прослушивать это в службе, а затем, когда он получит сообщение, он отправит данные через API уровня данных на умные часы для вибрации.
Теперь у меня работает фоновая служба, но она используетпуть к большой памяти.Несколько дней спустя я увидел на телефоне сообщение, в котором говорилось, что приложение использует слишком много памяти, поэтому оно автоматически закрывает приложение.Мой вопрос заключается в том, что использует много памяти в моем сервисе?Библиотека сокетов io, которую я использую, не предназначена для использования в фоновом режиме?
(Также каждые несколько минут пользователь отключается от сервера и повторно подключается, это продолжается)
Вотсервис, который я создал:
import android.app.Service;
import android.content.Intent;
import android.os.Binder;
import android.os.IBinder;
import android.util.Log;
import io.socket.client.IO;
import io.socket.client.Socket;
import io.socket.emitter.Emitter;
import nl.example.messenger.Messenger;
public class SocketIOService extends Service {
private final static String mSocketUrl = "https://example.io/";
private Socket mSocket;
private Messenger mMessenger;
private final LocalBinder mBinder = new LocalBinder();
public class LocalBinder extends Binder{
public SocketIOService getService(){
return SocketIOService.this;
}
}
@Override
public IBinder onBind(Intent intent) {
return mBinder;
}
@Override
public boolean onUnbind(Intent intent) {
return false;
}
@Override
public void onCreate() {
super.onCreate();
initializeSocket();
addSocketHandlers();
mMessenger = new Messenger(this);
}
@Override
public void onDestroy() {
super.onDestroy();
closeSocketSession();
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
return START_STICKY;
}
private void initializeSocket() {
try{
IO.Options options = new IO.Options();
options.forceNew = true;
mSocket = IO.socket(mSocketUrl, options);
}
catch (Exception e){
Log.e("Error", "Exception in socket creation");
throw new RuntimeException(e);
}
}
private void closeSocketSession(){
mSocket.disconnect();
mSocket.off();
}
private void addSocketHandlers(){
mSocket.on("message", new Emitter.Listener() {
@Override
public void call(Object... args) {
mMessenger.sendMessage("Socket: Got a new message.");
}
});
mSocket.connect();
}
}