• úvod
  • témata
  • události
  • tržiště
  • diskuze
  • nástěnka
  • přihlásit
    registrace
    ztracené heslo?
    LWEEKAndroid development
    REDGUY
    REDGUY --- ---
    DATEL: Kdyz si do toho onPause das nejakou debugovaci hlasku, opravdu se vola pred tim, nez ti ho hodi tu vyjimku? A vis jiste ze se ta vyjimka netyka nejakeho jineho kurzoru nez co zaviras?
    DATEL
    DATEL --- ---
    Ahoj, mám začátečnický dotaz k SQLite Cursorům, když jsou použité ve vlastním Adapteru v ListFragmentu. Vycházel jsem původně ze seriálu na Zdrojáku, prohledal jsem kupu příspěvků na stackoverflow.com i jinde, ale výsledek se nedostavil.
    Problém je, že ať dělám co dělám, tak mi při testování v emulátoru při otáčení obrazovky vyhazuje do logu výjimku, že nemám uzavřený cursor. Aplikace je rozložená zhruba takto:

    Třída s modelem, kde je vnitřní třída SQLiteOpenHelper a dále metody pro zpracování, mimo jiné getRecords, která vrací Cursor. Dále mám třídu s ListFragmentem, která je posléze vložena do hlavní activity. V této třídě mám metodu updateList:

    public void updateList() {
            Context ctx = getActivity();
            this.c = this.model.getRecords();
            TachoListAdapter adapter = new TachoListAdapter(ctx, this.c, 0);
            setListAdapter(adapter);
            //this.model.close();
    }
    


    model.close() zavírá databázi. No a právě když otáčím obrazovku (nebo i v jiných případech, kdy dojde ke "zničení") mi to vyhazuje výjimku do logu (ale aplikaci to neshodí), že není uzavřen Cursor.

    Zkoušel jsem dát tedy this.c.close() před model.close(), ale to nepomohlo. Pak jsem to zkusil dát do onPause() fragmentu. To bohužel taky nepomohlo. Taky mi občas vyhodil výjimku, že zavírám Cursor, který je již zavřený, tak jsem to upravil takto:

    public void onPause() {
            super.onPause();
            if (!this.c.isClosed()) {
                this.c.close();
            }
            
            //this.model.close();
    }
    


    Jenže i přesto mi tu výjimku se zavřeným Cursorem vyhazoval. Zkoušel jsem dát volání super.onPause() u za to volání uzavření cursoru, zkoušel jsem různě přesunovat zavírání modelu, ale nic.

    Už tu nad tím laboruju 2 dny, ale nepodařilo se mi to vyřešit :( Můžete mi prosím někdo poradit, jak tedy správně používat databázi a kurzory ve Fragmentech (konkrétně v tom FragmentList). Já měl za to, že uzavření toho kurzoru v onPause() by mělo fungovat, ostatně tohle jsem našel i v mnoha příspěvcích na netu, ale tam to bylo vždycky v Aktivitě.

    Díky za pomoc.
    DRIZDIK
    DRIZDIK --- ---
    Potřebuju aby kdy na jednom view začnu šmrdlat prstem a přejedu na druhý, který je napozicovaný nekde nad ním v layoutu, tak aby si mi i na tom druhém projevovaly TouchEventy .. projevujou se mi ale pořád jen na tom zadním. Jak to donutit ke polupráci?
    VIRTUALVOID
    VIRTUALVOID --- ---
    SPIRAL_FORCE: lubi sa mi ten napad s monitoredactivity :)
    SPIRAL_FORCE
    SPIRAL_FORCE --- ---
    udelal sem malou knihovnicku pro interaktivni orezavani obrazku, vice zde: https://github.com/biokys/cropimage
    mozna se nekomu bude hodit ;-)
    P0CIN
    P0CIN --- ---
    Hledám programátora android, případně iOS aplikací.

    Mám v hlavě myšlenku na jednu aplikaci, bohužel o programování nevím absolutně nic, takže bych to potřeboval zrealizovat a případně probrat, jestli to má vůbec cenu.

    Pro více info SZ :)
    Díky
    DARKIE
    DARKIE --- ---
    pocujte, nie je develeoperska konzola, cez ktoru sa publikuju aplikacie volajaka rozmrdana? nastavil som totiz v manifeste ze akcelerometer je required a ono mi to tam hodilo ze 0 supported devices. ked som z manifestu vyhodil tuto vec tak v pohode to tomu priradilo divajsis potom
    JACKER
    JACKER --- ---
    DEEJAYY: Ahoj, super díky. Byl bych pak moc rád, kdybys mi mohl napsat, v čem jsou České Noviny lepší. Já podle toho zdokonalím, díky.

    KAPITAN_JACK: Také děkuji za vyzkoušení a za hodnocení! :)
    DEEJAYY
    DEEJAYY --- ---
    JACKER: vyzkouším, zatím jsem si dost oblíbil České noviny ...
    KAPITAN_JACK
    KAPITAN_JACK --- ---
    Vypadá dobře, co by se mělo zlepšit je české zpravodajství.
    Badum tish
    http://www.badum-tish.com/
    JACKER
    JACKER --- ---
    Ahoj,
    vytvořil jsem aplikaci na prohlížení českého zpravodajství, jako např.: ČT24, iDNES, Lidovky, Novinky.cz, ...
    Všechno je v jedné aplikaci.

    Budu moc rád pokud mojí aplikaci vyzkoušíte a napíšete mi svůj názor.
    https://play.google.com/store/apps/details?id=com.jakubflaska.novinkyrss

    Máte prosím nápad, co by se dalo zlepšit?

    Děkuju moc.
    SIRLOON
    SIRLOON --- ---
    ANONYM_CZ: no ve starych programovacich jazycich a skriptech sme debugovali jenom pres logy a bylo to mnohdy bezpecnejsi a pohodlnejsi, nez se oprcavat s nejakyma breakpointama ;)
    ANONYM_CZ
    ANONYM_CZ --- ---
    VIRTUALVOID: +1 za debug pomoci "kokot" .. uz jsme tak vyresili tolik zaseku, ani to nespocitam ;)
    VIRTUALVOID
    VIRTUALVOID --- ---
    stacilo si len zanadavat, tak, ze to pocul cely barak :)
    VIRTUALVOID
    VIRTUALVOID --- ---
    aha uz viem kde je problem, takto to bolo treba robit :

    		FragmentManager fm = getFragmentManager();
    
    		homeFragment = (WriteupsHomeFragment) fm.findFragmentByTag("wuhome");
    		currentFragment = writeupsFragment = (WriteupsFragment) fm.findFragmentByTag("wulist");
    
    		FragmentTransaction ft = fm.beginTransaction();
    
    		if (homeFragment == null) {
    			homeFragment = new WriteupsHomeFragment();
    		} else {
    			Log.w(Constants.TAG, "KOKOT1");
    		}
    		ft.add(R.id.empty_view_ll, homeFragment, "wuhome");
    		ft.hide(homeFragment);
    
    		if (currentFragment == null) {
    			currentFragment = writeupsFragment = new WriteupsFragment();
    		} else {
    			Log.w(Constants.TAG, "KOKOT2");
    		}
    		ft.add(R.id.empty_view_ll, writeupsFragment, "wulist");
    		ft.show(writeupsFragment);
    
    		ft.commit();
    
    VIRTUALVOID
    VIRTUALVOID --- ---
    REDGUY: problem je nasledovny (ak by si chcel vediet, konkretne sa to tyka nyxdroidv2) :
    - vyrabam fragmenty, ktore su odvodene len od Fragment (t.j. ziadny ListFragment, etc), mam na to nejaky dovod...
    - aby som sa vyhol recreatovaniu viewu, v metode aktivity onCreate tieto fragmenty pridam cez add a v zavislosti od toho, ktory ma byt viditelny ako prvy ten jeden show a druhy hide.
    - vsetko funguje ok
    - data dostanem do listviewu
    - teraz stlacim home tlacitko a pouzivam ine aplikacie.
    - save instance state
    - po case sa zavola onTrimMemory co naznacuje aj to, ze aktivita, ktoru som predtym pausol cez home uz pravdepodobne neexistuje a treba ju vyrobit.
    - teraz pustam app znova, chcem aby sa recreatla aktivita s fragmentami a vsetko ide dokolecka.
    - restore instance state sa zavola tiez
    - ???
    - fragmenty niesu restornute/recreated.
    VIRTUALVOID
    VIRTUALVOID --- ---
    REDGUY: za ten svet neviem prinutit restornut listview vo fragmente :)
    REDGUY
    REDGUY --- ---
    VIRTUALVOID: Nejake stavnate podrobnosti?
    VIRTUALVOID
    VIRTUALVOID --- ---
    skurvene fragmenty do pici!!!1

    ehm, sorry, ve spolecnosti sa mi to nestava, sam som z toho velice prekvapeny.
    GORG
    GORG --- ---
    DRIZDIK: hmm ted se mi zda replikovatelny, ze pokud mam zapnutou aplikaci ICQ, pak se to zpomaleni projevuje, a v opacnym pripade to jde dobre. Tak to vypada, ze to zpusoboval ten icq messenger
    ROTTWEILER
    ROTTWEILER --- ---
    VERLIBA: Spustitelný soubor android je ve složce tools, která je v tom SDK a chce si to přidat do PATH.
    VERLIBA
    VERLIBA --- ---
    napadlo men jestli by nestacil symlink z tools/android.bat na tools/android a pridat tools do cesty - zatim se to tvari schopne - tak jsem si to mozna zodpovedel sam
    VERLIBA
    VERLIBA --- ---
    Mam zacatecnicky dotaz..
    snazim se buildit neco (linphone) ve widlich, a hned po prikazu make (prvni kror v readme) vypise
    which: no android in (nasleduji cesty, a v nich i :/cygdr/cygdrive/c/android-ndk-r8e:/cygdrive/c/adt-bundle-windows-x86_64-20130219/sdk )
    Prohledam jsem sdk a zadny android.exe tam neni.
    Dival jsem se do Makefile a vidim tam radek z nehoz to prameni
    SDK_PATH=$(shell dirname `which android`)
    Zrejmne, kdyz nekdo psal makefile, jeste byl nejaky nastroj android.exe - nevite nekdo jestli se jen presunul a prejmenoval?
    Dik
    GORG
    GORG --- ---
    DRIZDIK: zkousel ale v te chvili tam GC myslim nebezel. Podobny problem uz jsem resil vsiml si, ze zpomaleni delaly moje vypisy do logu, ktere zjevne taky delaly hlavne zbytecne alokace textu.
    DRIZDIK
    DRIZDIK --- ---
    GORG: takovýhle zpomalení by mohlo být způsobený garbage collectingem. Zkoušel jsi to sledovat, co se ti děje s pamětí a jak často ti GC probíhá?
    GORG
    GORG --- ---
    Už se nějakou dobu potýkám s náhodným zpomalením prakticky v kterémkoliv místě aplikace. Měl jsem podezření, že to možná způsobují některé procesy v pozadí androidu - například aktualizace aplikací, tak jsem si tam nějaké teď spustil, ať se mi aktualizují, a chová se to opravdu podobně.. někdy až sekundu i víc se to zastaví, občas i zapraská ve zvuku, což mi telefon dělá, když je už úplně v p*či.

    Setkal se s tím tu někdo? Resp. jak se vypořádat nebo nevypořádat s tím, že aktivity androidu v pozadí zastíní vaši hru? Zkoušel jsem hrát nějaké jiné hry z marketu a nevšiml jsem si zpomalení, ikdyž ty aktualizace je zpomalují stejný způsobem. Ale zkusil jsem si i automatické aktualizace vypnout, a stejně se to někdy stane. Testuju to třeba půl hodiny a je to v pořádku, a někdy hned po spuštění nebo prostě náhle to na chvíli se zadrhne. Po chvíli to třeba zas sviští. Nevím, co si o tom myslet. Posílám tam taky nějakou menší komunikaci přes internet, tak mám i podezření, že tyhle netový asynchronní tasky tam v pozadí můžou dělat neplechu. Zdá se, že když si vypnu net, tak se to zpomalení nestane. (ale těžko říct.. se to kolikrát dlouho tváří v pohodě a pak bum zas)

    Uf :) Už fakt nevím. Snažím se optimalizovat, dočasně eliminovat některé výkonově náročnější části, ale tím to zdá se nebylo. A projevuje se to kdekoliv v aplikaci (třeba v menu, kde mi na plynulosti moc nesejde, každopádně tam nic moc náročného není)
    SIRLOON
    SIRLOON --- ---
    mam takovej podivnej, nestydim se rici, ryze androidi problem. Mam appku kde mam v nejake nativni (ne webview) casti nejaky text v anglictine a device nastavenej na nemcinu a ten blbec mi to podtrhava jako chybu v textu. Jediny co sem nasel je vypnuti kontroly pravopisu v devicu ale s tim samozrejme nemuzu pocitat, ze bude mit kazdej vypnuty. Je moznost tuhle blbost nejak blokovat v appce?
    FAERTIS
    FAERTIS --- ---
    Lehký spam, kdyby někoho zajímalo, takový můj projekt :)
    Android kanónem na vodního vrabce | Aquasoup
    http://www.aquasoup.com/blog/android-kanonem-na-vodniho-vrabce/
    LUCIEN
    LUCIEN --- ---
    VIRTUALVOID: uz jsem to vyresil a popravde netusim kde byl zakopan pes. pravdepodobne za to mohl ctrl+c z pdf, kde se zkopirovalo i par spatnych znaku a php u toho nervalo...
    Kliknutím sem můžete změnit nastavení reklam