1. Java / Говнокод #9257

    +71

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 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

    Комментарии (3) RSS

    • Пустой Поток...
      почему на мне всегда все кончается?(ц)
      Ответить
    • > Data.killNow = true;

      "За что, капитан Пикард?"
      Ответить
    • Асинктаск в этом вашем быдлоиде это thread pool на пять потоков, а не запускаются они, потому что все пять потов в циклах повисли
      Ответить

    Добавить комментарий