Утечка памяти - сервис вызывает метод stati c - PullRequest
1 голос
/ 15 января 2020

У меня есть вопрос, касающийся утечки памяти в моем Java коде:

У меня есть служба, которая запускается каждую секунду (в производственном процессе она запускается каждую минуту) Когда я запускаю Android Studio Memory- Профилировщик, я вижу, что каждый раз, когда выполняется этот код, значение «Выделенной памяти» увеличивается на 6. Итак, я думаю, что этот код протекает? Очевидно, он очень медленно просеивает, но мне интересно, в чем проблема с этим кодом? Что я могу сделать, чтобы это исправить? Или это «нормальное» поведение?

enter image description here

SyncService. java

public class SyncService extends Service {
@Override
public void onCreate() {
    Context context = getApplicationContext();

    new Timer().scheduleAtFixedRate(new TimerTask() {
        @Override
        public void run() {

            if(!Helper.isNetworkAvailable(context)){
                Log.i(TAG, "Offline");
                return;
            }

            // ...
        }

    }, 1000, 1000);
}

}

Помощник. java

public class Helper {
    public static boolean isNetworkAvailable(Context context) {
        ConnectivityManager connectivityManager
                = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
        return activeNetworkInfo != null && activeNetworkInfo.isConnected();
    }
}

Если я комментирую вызов Helper.isNetworkAvailable(context) выделенного значения остается на месте.

...