Я инициализировать переменную-член в моем классе активностьсфера активности членов и AsyncTask
private String test = new String("A");
тогда я использую его, чтобы написать для входа в течение длительного времени, потребляющего цикл в doInBackground()
методом анонимного AsyncTask запущен из деятельности
new AsyncTask<Void, Void, Void>() {
@Override
protected void onPreExecute() {
}
@Override
protected void onPostExecute(Void result) {
}
@Override
protected Void doInBackground(Void... params) {
for (int j = 10; j >= 0; j--) {
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
Log.i("DOINBACKGROUND ", test);
}
}.execute();
ВОПРОС: Когда я уезжаю в то время как активность Asynctask
по-прежнему выполняется, и после активности 012-х, я вижу в журнале, что переменная-член все еще жива и не уничтожена. Может кто-нибудь объяснить мне, как это возможно?
BOUNTY ВОПРОС: переменный член еще жив, потому что, даже после того, как onDestroy()
, оно не еще garbaged в связи с критериями Gc и приоритетом ого. Хорошо.
Но мои сомнения, если
- «тест» переменный-член (и контекст своей деятельности в) не garbaged пока реферирование AsyncTask не закончил свой материал, таким образом, AsyncTask может завершить свою
doInBackground()
всегда и, конечно, без сбоев (хотя и с временным потреблением памяти)
или вместо
- переменная член «тест» будет б е garbaged рано или поздно, независимо AsyncTask работает, может быть, в результате чего завесить asysnctask в
Таким образом, asynctask в моем примере фрагмента завершает doInBackground() всегда и, конечно, без сбоев из-за NPE? – GPack