• úvod
  • témata
  • události
  • tržiště
  • diskuze
  • nástěnka
  • přihlásit
    registrace
    ztracené heslo?
    LWEEKAndroid development
    Diskuse o vývoji aplikací pro platformu Android.
    -----------------
    Tipy, Triky, Postřehy, Začátečnický help, Nápady na nové aplikace.

    Oficiální developerská stránka: http://developer.android.com
    Něco málo v češtině na WiKi android fora: http://wiki.androidforum.cz/index.php/Programov%C3%A1n%C3%AD
    Článek na Zrojáku: http://zdrojak.root.cz/clanky/vyvoj-pro-android-ii/

    Docela zajímavé tutoriály přímo od vývojářů ze Sony Ericsson:

    na tvorbu vlastního View adapteru
    http://blogs.sonyericsson.com/developerworld/2010/05/20/android-tutorial-making-your-own-3d-list-part-1/

    zajímavý nápad na zoomování jedním prstem - aneb vytváření gest
    http://blogs.sonyericsson.com/developerworld/2010/05/18/android-one-finger-zoom-tutorial-part-1/
    rozbalit záhlaví
    VIRTUALVOID
    VIRTUALVOID --- ---
    kurva ja ho chcem hned ;D
    VIRTUALVOID
    VIRTUALVOID --- ---
    to android studio vyzera epicky :D
    WAKI
    WAKI --- ---
    ARCAO: Diky, smazano, at tu neudelam jeste vetsi bordel :D :D
    FALCO
    FALCO --- ---
    REDGUY: aneb problem Wakiho cestujiciho
    REDGUY
    REDGUY --- ---
    WAKI: Nejen spatnej klub, ale i NP-uplnej problem. Ouch 8)
    FLYBOJ
    FLYBOJ --- ---
    VIRTUALVOID: Jasne, da se pocitat s tim, ze submitem nejspis prijdes o svoji znacku. Kazdopadne Jejich PR je hodne vysoko - doplnkovy marketing v hrackach, bonbonech atd atd..
    Neni to uplne idealni partner, ale stale si myslim, ze je to napad dobry. Kus obetujes, kus dostanes. (Nicemene pockam si na prvni hry a reakce jejich developeru)
    VIRTUALVOID
    VIRTUALVOID --- ---
    FLYBOJ: mne sa to moc nelubi. lebo deklaruju, ze tvoj napad mozu pouzit bez toho aby ti vobec cosi dali - budu to povazovat za svoj napad - citaj medzi riadkami :/
    FLYBOJ
    FLYBOJ --- ---
    Docela zajimava novinka http://www.rovio.com/en/developers/about
    Rovio se dava na cestu publishera pod znackou rovio stars. Myslim, ze to je dobra cesta i za cenu toho, ze si veme treba vetsi provize.
    SPIRAL_FORCE
    SPIRAL_FORCE --- ---
    GORG
    GORG --- ---
    SPIRAL_FORCE: Jak sleduješ paměť/leaky na telefonu? DDMS?
    ZACK
    ZACK --- ---
    GORG: ja s tim teda nemam nejmensi problem, teda do chvile nez se zapomenu a delam kazdy frame nejakou kravinu. Ale nenapadlo me to sledovat na desktopu.
    SPIRAL_FORCE
    SPIRAL_FORCE --- ---
    GORG: Ja vyvijim od zacatku jen na telefonu a nestezuju si. Bejt tebou, zkusim to na normalnim telefonu, kde si myslim, ze ti GC pobezi normalne. ;-)
    GORG
    GORG --- ---
    SPIRAL_FORCE: To mám :) Ale tu paměť testuju na desktopu (ne jako apk v androidu). Libgdx umožňuje to vyvíjet jako deskotop java aplikaci. Pro android to má pak nad tím backend vrstvu. To má výhodu, že se nemusím zdržovat nahráváním do telefonu resp. emulátoru.
    SPIRAL_FORCE
    SPIRAL_FORCE --- ---
    GORG: Me napada jen jestli nemas nejakou pojebanou neofiko ROMku ;-).
    GORG
    GORG --- ---
    ikdyž teď na to koukám v jednom případě mají vlastně jen Foo[] pole a ne žádný ArrayList, tak to asi v rozporu není. No šlo mi o to, jestli fakt nikde v update nemít situaci, kde se používá Iterator namísto přímé indexace, aby se pak neiniciovalo zbytečně moc nový objektů Iterator v každém tiku
    GORG
    GORG --- ---
    A taky se mi nezdá, že by to přímo leakovalo. GC tu paměť vždy všechnu úspěšně uvolní. Akorát nechápu, kde se co alokuje zbytečně navíc.

    Jinak trochu jsem narazil v tomhle směru na rozpor doporučení (Iterator vs ruční procházení pole [])

    Coding for performance and avoiding garbage collection in Android | devahead BLOG
    http://www.devahead.com/blog/2011/12/coding-for-performance-and-avoiding-garbage-collection-in-android/

    Iterator 481 ms 100 slower than both manual iterations and 100 objects allocated (an Iterator instance for each test repetition)

    vs

    Performance Tips | Android Developers
    http://developer.android.com/training/articles/perf-tips.html

    public void two() {
    int sum = 0;
    for (Foo a : mArray) {
    sum += a.mSplat;
    }
    }
    two() is fastest for devices without a JIT, and indistinguishable from one() for devices with a JIT. It uses the enhanced for loop syntax introduced in version 1.5 of the Java programming language.
    GORG
    GORG --- ---
    ZACK: No ale když vymažuju úplně všechen svůj kód.. nechám prázdný update(), po spuštění nespustím ani žádnou inicializaci čehokoliv (prostě jen černou obrazovku s prázdnou smyčkou), tak to leakuje úplně stejně :) Tak leda, že by to leakovalo někde v té knihovně libgdx, kterou používám jako framework?
    ZACK
    ZACK --- ---
    GORG: Nekde ti to proste tece... hledej smudlo. To co popisujes rozhodne neni normalni :)
    GORG
    GORG --- ---
    Zajímalo by mě, co si myslíte o volání system.gc() ručně? Řeším situaci, kdy občas/opakovaně aplikace vytuhne na pár sekund. Napadlo mě, že je to kvůli Garbage collectoru. Soudě dle analýzy VisualVM se nsutále pozvolna plní heap (asi tak o 100KB) až nakonec, když už má třeba 35 MB nebo míň, jde vynášet odpadky. A uvolní tím asi 30 MB, takže hodně. zdá se, že to typicky pak spadne na nějakých 3 MB

    To je ohromný množství a vysvětlovalo by to, proč na chvíli úplně vytuhne? Zkusil jsem udělat, aby se GC volal řekněmě každých 5 sekund, a tak se heap drží stále někde kolem 3 - 4 MB.

    Zdá se, že to pomohlo, anebo jsem zatím nepozoroval už znovu to zatuhnutí. Napadá mě k tomu:

    1) Proč se neustále alokuje nějaká paměť, jde tomu zabránit nebo je to normální?
    2) Podezíral jsem, že jsou tam nějaké alokace při každém tiku, ale žádné nenacházím, tak nevím,
    3) Po "celém internetu" se píše, že by se ručně GC _nikdy_ volat nemělo. Takže mi to moje řešení mate hlavu, protože to zní jako antipattern. Ale z mojí logiky mi přijde, že lepší uvolnit menší množství, než když pak nakonec vysypává celý heap. Ze stackoverflow.com apod jsem se dočetl, že ten růst heapu je normální
    4) GC prý zablokuje všechny thready a objekty, takže to není dobré třeba na webovou službu, ale na android aplikaci to asi není relevantní.
    Kliknutím sem můžete změnit nastavení reklam