+71
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
public class Pages extends TabActivity {
@Override
protected void onResume() {
super.onResume();
if (!loading) {
loading = true;
new EmptyThread().execute();
}
}
@Override
protected void onPause() {
Data.killNow = true;
super.onPause();
}
private class EmptyThread extends AsyncTask<Void, String, Void> {
@Override
protected void onPreExecute() {
Data.killNow = false;
}
@Override
protected Void doInBackground(Void... unused) {
while (!Data.killNow) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
}
}
return null;
}
@Override
protected void onPostExecute(Void unused) {
loading = false;
}
}
}
В продолжение предыдущей темы (http://govnokod.ru/9256): из-за столь вольного обращения с модификатором static и адского обращения с AsyncTask*ами программист нарвался на утечку памяти и AsyncTask*и у него прекратили запускаться (не факт, что из-за утечек, я их исходный код не смотрел). Выше вам был представлен костыль, благодаря которому асинхронки всё-таки запускались. Как - я так и не постиг.
Для справки - когда экран выходит на передний план, срабатывает onResume(), когда уходит с него - onPause().
Запостил: QuickNick,
30 Января 2012
Lure Of Chaos 30.01.2012 17:42 # 0
почему на мне всегда все кончается?(ц)
someone 30.01.2012 20:27 # +1
"За что, капитан Пикард?"
guest 04.02.2012 11:18 # 0