- OnePlus 7 - magabiztos folytatás
- iPhone topik
- Új nyomógombos Nokiák érkeztek
- Samsung Galaxy A54 - türelemjáték
- Apple Watch Sport - ez is csak egy okosóra
- Android alkalmazások - szoftver kibeszélő topik
- Nothing Phone 2a - semmi nem drága
- Samsung Galaxy S22 Ultra - na, kinél van toll?
- A Watch7-tel debütálhat a Samsung vércukormérője
- Magisk
Hirdetés
-
Premier előzetesen a Demon Slayer -Kimetsu no Yaiba- Sweep the Board!
gp Elérhető lett Switch-re a játék, amely leginkább a Mario Party-hoz hasonlítható.
-
A személyre szabott reklám lehet a streaming következő slágere
it A jobb célzott hirdetések érdekében adatplatformot indít a Warner Bros Discovery.
-
Ülésezik a hardveregylet
ph Az irodai készülékek és monitorok társaságát egy ház, egy egér és egy DAC egészíti ki.
Új hozzászólás Aktív témák
-
thon73
tag
Senki sem tudja, hogyan lehet a JDK-t beállítani Android SDK alatt? (Az OpenOffice visszarakta az Openjdk-jdk-t, és nem tudom, az Android melyiket használja.)
Más: ha valaki AsyncTask-ot használ, egy blogcikk-sorozatban összeírtam, amit összeszedtem ill. kipróbáltam. ([link], folytatás folyamatban) Kicsit hosszú ahhoz, hogy a fórumra kerüljön, de ha van itt további ötlet / egyéb tapasztalat / ellenvetés, annak örülök. -
-
SektorFlop
aktív tag
Kernel verzió: 2.6.38.6-perf
Android verzió: 2.3.6A Rom neve egyébként, ICS OS B07-van a készüléken.
[ Szerkesztve ]
"Amikor már azt hittem kint vagyok, ezek mindig visszarántottak..."
-
SektorFlop
aktív tag
Root Explorerrel böngészve nem találom ezt a mappát: /system/etc/init.d/, vagyis az etc-n belül nincs init.d, megnéztem konzol alól is de nem talál olyan mappát hogy init.d.
Igen igen, csak a kinézett miatt kapta az ICS nevet, egyébként 2.3-van rajta ahogy láttátok is. A kernel pedig a proci felhúzás miatt kellet, mert a gyáriban le van tiltva :S
[ Szerkesztve ]
"Amikor már azt hittem kint vagyok, ezek mindig visszarántottak..."
-
SektorFlop
aktív tag
Root Expolerben alapból lehet látni, de van Es Explorel is, engedélyeztem abba is, de semmi... De inkább hagyom, még rákérdeztem a rom készítőinél. Ha ők se tudnak segíteni, keresek rá másik kernelt és romot. Nem ártana ha lenne Logcat.
"Amikor már azt hittem kint vagyok, ezek mindig visszarántottak..."
-
fatal`
titán
Ez is lehet az oka. Sokszor csak egy eclipse restart segít, hogy egyáltalán az assets mappában lévő cuccok frissüljenek, mert hiába nyomkodom az f5-t / cleant, nem foglalkozik vele.
"A biztos, ha törlöd pl. a gen mappát, és utána újrafordíttatod (pl. clean). Ilyenkor ugyanis legyártja újból, és az biztos jó lesz."
Vagy nem. Nekem olyat is produkált már, hogy ott volt az R.java mégis sipákolt, hogy nem találja az R classt. Szintén restart segített
-
fatal`
titán
Azonnal az elég túlzás. Attól függ mekkora programot fordítasz, idő amíg átmásolja a telefonra az apk-t. BlueStacksre viszont valóban azonnal indul.
Az AVD iszonyat lassú, már maga az apk átmásolása is (egy 10 megás apk, amiben mondjuk vannak képek és zene kb. 1 perc mire átér rá), játékfejlesztésre alkalmatlan.
-
fatal`
titán
Én nem a mentett adatokról beszélek, hanem az assets és res mappáról, ami az apkba van csomagolva. A mentett adatokat futás közben hozod létre.
Egyébként az SD-n tárolás nem biztos, hogy jó megoldás. Egyrészt felesleges permission kell hozzá (ha csak erre van használva), másrészt, ha kiveszik a kártyát a userek a telefonból, akkor nem működik az appod.
-
fatal`
titán
Ilyenre nyílván az sd kell, ha utólag kell letöltögetni.
"Csakhogy azokban az adatokban nem lehet ugrálni, csak folyamatos beolvasást találtam."
Az assets meg a res mappát az emulátor sebességéhez hoztam fel, hogyha tele van adattal akkor az lassú (pl. játékfejlesztés, vagy sok beépített képpel operáló program)."Dupla tárolás, pl. asset-ből beolvasni, kizárva uis. legfontosabb, hogy azonnal reagáljon.)"
Ezt most nem értem. Az assetsbe rakott cuccok a belső memóriába települnek az apkval együtt, gyorsabb onnan beolvasni, mint az sdről. Viszont módosítani nem tudod, nem is arra van. -
Yany
addikt
Ezt a nagyobb content-tel rendelkező játékok androidon úgy oldják meg, hogy az appnak csak a motorja jön le, a tartalmat pedig maga az app tölti le egy szerverről. Ekkor nem töltöd le 2x, nem tárolod 2x, és írható is lesz, ha akarod. Vagy ez valamiért nem pálya?
[ Szerkesztve ]
Építs kötélhidat - https://u3d.as/3078
-
fatal`
titán
Az írás nagyon nem az erősségem, ráadásul a hagyományos opengl programozásról nagyon keveset tudok, én andenginet használtam. Nehéz cikket írni róla, nincs dokumentáció sem, csak a példakódok és a fórum, ahol bárki szivesen segít, bár angol.
"Palm/Garnet OS alatt ez úgy működött, hogy a kész adatbázist (most sqlitenak felel meg) a program telepíthette fel, és rögtön kész adatok álltak rendelkezésre."
Életemben nem használtam Palm OS-t, de szerintem ezt most is meg tudod tenni. Kérdés, hogy minek, egyszerűbb a fentebb említett módszerrel letölteni valahonnan a kész adatbázist. Az offline szótárak többsége így működik szerintem.
[ Szerkesztve ]
-
fatal`
titán
-
Karma
félisten
Én Windows 8-on jártam ugyanígy,de sajnos nem sikerült megoldani, újrahúztam végül az egész hóbelebancot. Azt hiszem próbáltam az update site-on keresztül foltozni, de nem sikerült neki.
A dolog kellemetlenségét fokozza, hogy a legújabb bundle-ben az Eclipse összefosta magát (nem találta meg a saját bundle-jeit), amint feltelepítettem a Subclipse-et. Na ilyet látott már valaki?
“All nothings are not equal.”
-
pittbaba
aktív tag
ÓÓ hogy ezt te követted el? Akkor először is és
Ismerősek voltak a szavaid, ezek alapján haladtam én is, de nem láttam, hogy kitértél e arra, hogy hogy kapja meg a hívó az async task által lekért eredményeket.Nagyon jó a cikk, a teljes ködös semmitnemértek ebből verzióból a nagyjából átlátom részig sikerült fejlesztenem magam miután átrágtam a cikket, köszi, nagy segítség.
Igen, ezen gondolkodtam én is, hogy mivel ez háttér folyamat, közben pont az a lényeg benne, hogy az activity meg közben azt csinálja ami a dolga, ne erre várjon, így az asyncen belül érdemes feldolgozni az eredményeket ha jól értem.
Én úgy gondoltam, hogy paraméterben kap az async egy stringet, hogy hogyan dolgozza fel a kapott eredményt, és hova írjam ki éppen. Gondolom nem érdemes minden alkalomhoz külön teljes Async osztályt létrehozni.(?)
Sok ilyen hasznos cikket még!
PH Konfigom: Gigabyte GA-H97M-D3H, i7 4790K,GTX 960, Seasonic SS-620GM
-
pittbaba
aktív tag
Köszönöm a részletes magyarázatot, egy előre elég lesz nekem az onPostExecute ban feldolgozni az adatokat, ez a trigger dolog viszont érdekes lehet! Most éppen a cikked alapján megcsinálom a kezelést elforgatásra, back gombra stb, hogy jól be legyen betonozva, ezek valóban kötelező feladatok itt.
A cikkeket alig várom, én biztos rámegyek megint, ha jönnek új infók.
PH Konfigom: Gigabyte GA-H97M-D3H, i7 4790K,GTX 960, Seasonic SS-620GM
-
pittbaba
aktív tag
Szia!
Igen, ma fogok ott tartani gyakorlatban is, hogy a szebb megoldásokat is lépésről lépésre beépítem a programomba. Lesznek nehezítések még a cikked példájához képest, biztos, hogy fogok még kérdezni a témában. Saját adatbázisból próbálom lekérni a kiválasztott BKV járat legközelebb induló járatait. Mivel a legtöbb infót az offline sqlite db-ből szedi, viszont az érzékenyebb nagyobb lekéréseket már a netről, ezért kell nekem főleg az Async task, mivel az adatok egy részét (vonal neve, megállók) már kiírom kiválasztás után rögtön, de lehet az internetről szerzett adatok csak később érkeznek meg és íródnak ki. Szerintem itt jogos az AsyncTask használata. Viszont mi van, ha éppen nem sikerül neki számomra megfelelő adattal visszatérni, mert mondjuk pont nem kapaszkodott fel a wifi? Azt is kezelnem kellene. Illetve, ha elmúlt az adott időpont (elment a következő járat ) akkor újra csináljon egy lekérést, már a frissebb indulási időpontokkal visszatérve, valahogy rá kell vegyem, hogy a háttérben emberi időközönként frissítsen.
A konkrét kérdésemre is megkaptam a választ, annyi volt a gond, amire számítottam is, osztálynévvel ki kellett egészítenem a változónevet, így már látja a változót, nem ír hibát! (van egy temérdek hiányosságom Javaból, PHP-ban dolgozom, nehéz átállni és néha csak úgy nem akar jönni a megoldás)
A cikk kapcsán felmerült egy kérdés: Az érték megőrzése ha bezárult az alkalmazás dolog írtad, hogy a példádban már lejárt. Mikor várható leírás ennek az újabb verziójáról? Fragmentekre kell rákeresnem? Ott lesz a megoldás?
A téma áthelyezése szerintem úgy lenne a legetikusabb mindenki számára, ha innen a diskurzus részeit néha bemásolod a cikked alá is. Mivel valóban ez az egyetlen magyar fórum itt van, hagy legyen meg itt is az érdeklődők számára, hasznos lesz ez egy év múlva, ha már többen mennek neki az Android home fejlesztésnek.
PH Konfigom: Gigabyte GA-H97M-D3H, i7 4790K,GTX 960, Seasonic SS-620GM
-
pittbaba
aktív tag
Én itt élek Pesten évek óta, de nem itt nőttem fel, így ez a funkció lesz, igazából pont erre építem az alap szerkezetet. Jó lenne, valami irányzék is, hogy pontosan helyileg oda tudjon menni a user a megállóba, de az később, a kiadott adatbázis amúgy sem a legpontosabb eddigi tapasztalat szerint, de majd.. ez még új dolog
A kérdésem erre a részre vonatkozott:
Ezen a ponton átalakítottuk a belső TimeConsumingTask osztályt static típusúvá, vagyis egyetlen timeConsumingTask létezhet. Hogyan tudnánk ezt megőrizni, miközben az UI-szálon futó alkalmazásunk újraindul? Az Alkalmazkodjunk az új környezethez! Felületi változások c. cikkben már beszéltünk az onRetainNonConfigurationInstance() metódusról, mellyel egy értéket meg tudunk őrizni a program újraindulása alatt. ((Megjegyzendő, hogy ezt a módszert a Honeycomb rendszertől kezdve érvénytelenítették. Az új módszer azonban a Fragment-ek beható ismeretét igényli, ezzel később (ha a gépünket Jelly Bean-re frissítettük) részletesen foglalkozunk.))Én is a frissítés gombra gondoltam megoldásnak, csak nem tudom érteni fogja e a user magától, hogy ha nincs indulási időpont, akkor neki a frissítés gombot kell nyomkodnia, de kitalálom.
Galaxy S2-n meg mini-n tesztelek, még én sem foglalkoztam a tablet méretekkel..
És még valami: Én külön fájlba vettem az Async osztályomat, nem engedi static-ra rakni, hogy ne fusson több egyszerre, azt a hívó activity async startoló metódusában csekkoljam indítás előtt?
[ Szerkesztve ]
PH Konfigom: Gigabyte GA-H97M-D3H, i7 4790K,GTX 960, Seasonic SS-620GM
-
pittbaba
aktív tag
Rendben, nagyon lassan haladok, mert közben rendes melót is csinálom, de odaérek lassan, és akkor kiderülnek a dolgok számomra
A tesztelésben biztos sokan benne lesznek, sok a fanatikus szerencsére ..Csak érdekességképpen kérdezem, nem annyira fontos a program szempontjából, de miért lehet, hogy a getContentLength() -1-el tér vissza? Egy ideig jól adta vissza nekem a várt csomagméretet, de mióta JSON bemenetet kap, nem html-t, valamiért ezt kapom vissza. Mi okozhatja?
PH Konfigom: Gigabyte GA-H97M-D3H, i7 4790K,GTX 960, Seasonic SS-620GM
-
pigster
senior tag
Nem tudom, hogy mindent nekem írtál-e vagy sem. De a "kötelező list elem" az nem kötelező list elem, hanem az id kötelezően az kell, hogy legyen, ha ListActivity-ne belül használod a listview-t.
Az másik kérdés, hogy egy-egy listaelem hogyan néz ki. Ezt egy saját adapterrel meg lehet változtatni.FIGYELEM! A többszázezres Samsung okostévék kéretlen reklámokat tolnak az arcodba.
-
Mbazsika
tag
-
Sianis
addikt
Ezt olasd át. Az explain elmagyarázza neked, hogy a lekérdezés eredménye milyen lépésekből áll. A gyors keresés érdekében kerülni kell a full table scaneket, azok helyére érdemes indexet tenni. Ilyenkor az történik, hogy nem kikeresi az értéknek megfelelő rekordokat, hanem "tudni" fogja, hogy melyik rekordok azok amik megfelelnek a feltételnek.
Sianis
-
thon73
tag
Érdekes. Az egész adapter-kérdést az onResume-ba helyezve is működik. (bocsánat, az előbb elírtam onStart-ra, de az onPause párja az onResume)
Tehát: adatbázis megnyitás, query, majd a simplecursoradapter az onResume-ban van,
cursor zárás, adatbázis zárás az onPause-ban.
((Az más kérdés, hogy a gyakoribb lekérdezés lehet hosszú, de most csak néhány elemről van szó - inkább az elmélet megértésére.))
A kérdés most fordítva merül fel bennem: van valami oka, amiért annyi más (hibaüzenetet adó) megoldás mellett ezt nem találtam a neten? Nekem elméletileg és gyakorlatilag is korrektnek tűnik (időtényezőt nem nézve); szól ez ellen a megoldás ellen valami, amit nem vettem észre? -
Sianis
addikt
Maximum annyi, hogy túl gyakori lehet a meghívása. Jön egy telefonhívás, átnavigálsz egy másik appra, alvó üzemmódba kerül a telefon, átváltasz egy másik Activityre. Van létjogosultsága, de pl engem nagyon zavarna, ha lemegyek egy lista aljára, elrakom a telefont alvóba, majd mikor előveszem akkor megint a lista tetején vagyok, mivel az adapter újra lett építve teljesen.
Sianis
-
SektorFlop
aktív tag
számomra még nem teljesen világosak ezek az activity életciklusok. Jelenleg onStart-ba raktam az adaptert, Home gombal "kilépek" az alaklmazásból, aztán újra elindítom, és ilyenkor újraépíti az egész activityt, nekem is totál et kell terveznem az egészet.
"Amikor már azt hittem kint vagyok, ezek mindig visszarántottak..."
-
SektorFlop
aktív tag
Nem tudom mennyire jó megoldás, de én már a cursort rögtön a lekérdezés után zárom, és egy listát ad vissza a metódusom, amit az adapter az onStart-ban feldolgoz. Adatbázist nem zárok sehol, pedig lehet kellene.
"Amikor már azt hittem kint vagyok, ezek mindig visszarántottak..."
-
fatal`
titán
"Ez azt jelenti, hogy az onCreate-ben megnyitott adatbázist az onDestroyban kellene bezárni. Ha előbb zárjuk be (pl. onPause), akkor visszatéréskor (onResume-tól kezdődik), nem lesz nyitott adatbázisunk (mivel a megnyitást végző onCreate nem kerül meghívásra!)"
Miért ne lenne? Csak akkor nem lesz, ha az onPauseban lezárod a kapcsolatot.
Legalábbis ez lenne a logikus. Persze nem tudom mennyire jó ötlet nyitvatartani a háttérben, nem csináltam még ilyet csak PC-n, ott meg ugye egész más a helyzet.
[ Szerkesztve ]
-
thon73
tag
Még egy apróság: a problémám abból fakad, hogy a dokumentáció kihangsúlyozza, az onPause után az Activity-t a rendszer kilőheti.
Ezzel szemben többen állítják (és elvileg ez így kell legyen, hiszen az activity csak egy objektum, hogy lehet eltüntetni egy objektumot?), hogy a rendszer Activity-t nem, csak process-t tud kilőni. Márpedig a teljes application egy processben van benne.
De akkor hogyan lehetséges, hogy az egyszerű példaprogramom újra el tud jutni az onCreate-be, onDestroy nélkül. Kilőtte a rendszer a process-t az egész alkalmazás alól?
Kételyek között vagyok - nem értem az egészet.És a source-ban is elég nehéz egy ilyen komplex eseményt lenyomozni... -
-
thon73
tag
...feladtam a harcot az Android életciklusainak megértésére. Sztem. a fejlesztők is, API11 felett teljesen más módszereket alkalmaznak.
Segítséget szeretnék kérni: egy príma Wayteq xtab700dc-t szeretnék rábírni az Eclipse-szel való együttműködésre most WinXP, (egyébként linux alatt, ami esetünkben könnyebbnek tűnik).
Android 4.1.1 alatt kell windows driver? Ha igen, tudja-e valaki, hogy ezekhez a remek kínai termékekhez hol lehet szerezni/mit lehet használni?
Van egy "Internal Memory" (pontosabban csak az van...) feliratú fa-struktúrám. (nem rootolt gép). Ez vajon hova lehet be-mountolva? Vagyis hogyan érhetem el programból? (Rögtön a '\' alatt lehet?) Ha esetleg valaki rootolt gépet használ, megnézné?
Előre is hálásan köszönöm!
((Bocsánat, hogy nem tényleges programozást kérdezek, de oda szeretnék eljutni ezzel a géppel is. Másutt nem hiszem, hogy segítséget találok erre a problémára...)) -
thon73
tag
A mérgelődésen kívül két konkrét kérdésem lenne Fragment-ekkel kapcsolatban:
1. A Fragment által létrehozott Options-Menu a Fragment eltávolítása után is megmarad. Ha új Fragment példányt csatolok be, akkor az előző (eltávolított) példány Options-menu-je is, és az új is látszik. Ezt (a régi menüt) mivel tudom kitörölni a Fragment eltávolításakor? (Az előző Fragment már "eltűnt", vagy legalábbis tag keresésével nem találja meg. De a menu maradt.)
Az invalidateOptionsMenu nem működik, vagy nem tudom, hol kellene kiadni. A menu.clear() (pl. a prepare részben) viszont mindent kitöröl, és egyáltalán nem látszik a menü.2. Ha elmentettem egy transaction-t a backstack-re, és nem arrafelé megyek vissza (mert pl. elfordítottam a telo-t), akkor hogyan tudom azt onnan eltüntetni? ((A BackStack-on lévő elemek száma minden elfordításkor növekszik, hiába lesz közben "Destroy". Ez nem is lenne baj, csak a visszafordításkor az alap Fragment-ről szeretnék indulni, miközben a "második" Fragment (vagyis a tranzakció) el van mentve a BackStack-re.))
API17-tel fordítottam, de API8 minimumra, tehát support package-t használtam. Elvileg ez nem lehetne baj. Előre is köszönöm, ha valakinek van ezzel tapasztalata.
-
thon73
tag
-
thon73
tag
Amíg a válaszokra vártam, tovább nyomoztam:
Úgy tűnik, ha egyszer egy Fragment példányt létrehoztunk, akkor az örökkön-örökké létezni fog a FragmentManager-ben - pontosabban addíg, amíg a program VÉGLEG be nem fejeződik (tehát nem konfig vált. miatt.) Ez meglehetősen furcsa működés, mert akkor mire szolgál a setRetainInstance?
Érdekes, jobban elolvasva a doksi is ezt mondja: a detach hasonló ahhoz, mintha a BackStack-en lenne a fragment, csak ilyenkor a FragmentManager tárolja.
Support package-ot használok API8 minimum mellett API17-tel fordítva.
Meg tudná ezt valaki erősíteni v. cáfolni? Lehet, h. ez egy hiba? Vagy a supporttal van valami gond? -
Sianis
addikt
Sajnos, most nem tudok nagyon beleásni a témába, de annyit had tegyek hozzá, hogy nem hiszem, hogy a supportban más lenne, mint az új rendszerekben. A support tudtommal ugyanazt a kódot tartalmazza, mint ami a 4.0+ rendszerek megkaptak. Gyakorlatilag egy backport, annyi különbséggel szerintem, hogy SDK számtól függően vagy a support osztályokra, vagy a rendszer osztályaira hivatkozik.
MOD: Valami kódot nem akarsz esetleg feltölteni? Nem kell bele semmi extra logika, csak lehet, hogy rátekintve jobban kibukik a baki.
Sianis
[ Szerkesztve ]
-
thon73
tag
Nem tudok elszakadni a felszaporodó fragmentek problémájától...
Sehol nem írják ezt a megoldást, pedig nekem minden bajomat megoldotta. Sőt! Portrait-ból Landscape-be való visszafordításnál a másodlagos Fragmentben lévő adatok is megmaradtak! (Lévén ugyanaz a Fragment jelent meg máshol)layout/main.xml
<FrameLayout
android:id="@+id/portrait"
... >
<FrameLayout
android:id="@+id/list_frame"
... />
<FrameLayout
android:id="@+id/edit_frame"
... />
</FrameLayout>layout-land/main.xml
<LinearLayout
android:id="@+id/landscape"
... >
<FrameLayout
android:id="@+id/list_frame"
... />
<FrameLayout
android:id="@+id/edit_frame"
... />
</LinearLayout>Vagyis: ugyanazok az id-k mind landscape,mind portrait módban. Természetesen portrait módban a két frame "átfedi" egymást, tehát a program logikájának kell megoldani, hogy hol az EDIT, hol a LIST fragment legyen felcsatolva a saját (átfedő) Frame-jébe.
Az egész program (ill. ez a része) csak KÉT Fragment Példányt tartalmaz. És egy Activity van (ez volt a cél)Szól ez ellen a megvalósítás ellen vmilyen. érv? Nekem működőképesnek tűnik. Mivel a két layout egyszerre nem valósul meg, az id-k sem akadnak össze. Mindkét frame mindig a "saját" frame-jébe lesz bekapcsolva, mindig a saját tag-jével jelölve. Nincs változás, nincs hibaüzenet. Mivel nem a frame-ek kapcsolnak ki/be, az animációk ugyanúgy látszanak.
Mégsem olvastam ilyen megoldást sehol. Van ezzel vmi baj szerintetek?
Tényleg senkinek nem volt még nehézsége a fragmentek megvalósításával? Tényleg senkinél nem szaporodtak még fel az elforgatások során?[ Szerkesztve ]
Új hozzászólás Aktív témák
- -56% HP EliteBook 840 G8:i7 1165G7,16GB RAM,512GB NMVe SSD,Iris Xe,IR kam.+ujj.olv.,vil.MAGYAR bill.
- Monitortató plexi konzol több elérhető készletről MONITORCENTER
- -50% HP EliteBook 840 G8: i7 1165G7,32GB RAM,1TB NMVe SSD,Iris Xe,IR kam.+ujj.olv.,vil.MAGYAR bill.
- 1.250.000 FT helyett 940.000 FT !! MacBook Pro 16" M3 Pro 12CPU / 18GPU / 18GB / 512 SSD
- RTX 2080TI ROG STRIX GAMER PC