Може ли това да се събира на боклук?

В съществуващия (вероятно) работещ код виждам следната конструкция:

void someFunc() {

    some_irrelevant_code();

    new Runnable() {
        Handler handler = new Handler();
        @Override
        public void run() 
        {
            //will run each 5 seconds
            doSomething();

            if (!needStopSomeThread)
            {
                handler.postDelayed(this, 5000);
            }
        }
    }.run();
}

Чудя се дали Runnable и Handler могат да бъдат събрани в произволен момент. Изглежда, че само runnable препраща към манипулатора и само манипулаторът препраща към runnable, така че и двата може да са събрани за боклук, освен ако Android няма структура от данни, реферираща към един от тях, напр. манипулаторът.

1) Могат ли и двамата (манипулаторът и изпълняваният) да бъдат събирани?

2) Ако те могат да получат събиране на боклука, как мога да докажа, че това наистина се случва?


person 18446744073709551615    schedule 21.01.2015    source източник
comment
Вярвам, че отговорът на въпроса ви е тук: stackoverflow.com/a/14601968/1127492   -  person Stefan    schedule 21.01.2015
comment
@Stefan: така, могат ли и двете да бъдат събирани за боклук? (Не виждам как може да последва от тази връзка.)   -  person 18446744073709551615    schedule 21.01.2015
comment
Вижте кода на LooperThread (в отговора, споменат по-горе), как да използвате манипулатора в нишка. Ако нишката на looper е прекратена, може да бъде gc'ed, както и манипулаторът.   -  person Stefan    schedule 29.01.2015
comment
@Stefan искаш да кажеш, че ако нишката на цикъла не е изрично прекратена (и не прекратява имплицитно), тя ще препраща към манипулатора и, следователно, към изпълнявания. нали   -  person 18446744073709551615    schedule 29.01.2015
comment
да Нишката обикновено се прекратява имплицитно, когато дейността или услугата се прекратят.   -  person Stefan    schedule 10.02.2015