• ú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í
    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í.
    FALCO
    FALCO --- ---
    SIRLOON: Zbytek je pravda jenom k IDE dodam ze neni jen Eclipse ;)
    ROTTWEILER
    ROTTWEILER --- ---
    SIRLOON: Tak jasně, já netvrdil, že vývoj pro Android je dobrý, a že ostatní jsou horší. Také se mi vyvíjí lépe pro iOS než pro Android, ale i přesto mám Android rád a líbí se mi, že tam zase mohu dělat věci, které na iOS nejdou a rozhodně pro něj nepřestanu vyvíjet. Spíš s každým problémem se učím novým věcem jak problém obejít.
    SIRLOON
    SIRLOON --- ---
    ROTTWEILER: no, v praci mame projekt, kterej je zamyslenej na android 2.2 a vyse, tj. mobily i tablety. Mame cca 8 devicu. Na kazdym z nich je rozbity neco jinyho. Kdyz se device pripoji na debug monitor tak se zacne taky chovat jinak, takze neni mozne nasimulovat nezadouci chovani, ktere jinak nastava. Testovani inapp purchase je uplne nonsense protoze musime pokazdy restartovat zarizeni do tovarniho nastaveni a zadnej vylozene sandbox jako u iOS a WP8 proste neni. Tohle jsou proste zbytecny klacky pod nohama. O eclipsu a jeho naladovosti nemluve
    ROTTWEILER
    ROTTWEILER --- ---
    SPIRAL_FORCE: Když už jsme u těch ORM, tak v dnešním Android Weekly byl http://siminov.github.io/android-orm Celkem zaujal.
    PISKVOR
    PISKVOR --- ---
    ROTTWEILER: Psal to Hulán.
    SPIRAL_FORCE
    SPIRAL_FORCE --- ---
    Cus, hodil sem na github takovou malou knihovnu pro praci s DB (ORM) v androidu. Myslim, ze dokaze usetrit spoustu zbytecne prace pri mapovani db tabulek na objekty. Najit ji muzete tady: https://github.com/biokys/simple-droid-dao . Budu vdecny za pripominky. BTW ten tutorial urcite obsahuje spoustu gramatickych chyb ;-). To casem opravim
    ROTTWEILER
    ROTTWEILER --- ---
    SIRLOON: Můžeš to podložit nějakými podklady? Nebo to pouze vychází z toho, že ty a tvůj kamarád jste se na to vykašlali?
    Kliknutím sem můžete změnit nastavení reklam