Diskuze: Android - widgety

Java Java Android - widgety

Avatar
Josef Štěpánek:

Ahoj všem,
měl bych na zdejší odborníky dotaz ohledně widgetu na androidu.
Takže o co se jedná. Vytvořil jsem si aplikaci v Android Studiu, naimplementoval nějakou funkčnost a chtěl jsem jsi k aplikaci přidat widget. Tak jsem si to tam přidal přes to pěkný klikátko, co tam maj. Poté jsem si ho nějak upravil podle sebe a vyzkoušel, zde bylo ještě vše v pořádku. Ukončil aplikaci, widget pořád fungoval.

A teď tedy k tomu, kde je problém, na který jsem narazil jen na určitém modelu telefonu (prozatím). Jestli jsem to dobře pochopil, tak po nějaké době ukončuje Android procesy. Takže když já ukončím aplikaci a pak třeba zamknu telefon, tak se provede vypnutí toho procesu aplikace a poté když chci používat widget, tak nefunguje. Bohužel mi ani debuger nevyhodí nějakou chybu, čeho bych se mohl chytnout.

Zároveň jsem si stáhnul pro přehled https://play.google.com/…apps/details?… na sledování procesů. Co je ale zajímavé, tak když ten proces ukončím přes aplikaci, tak ji widget sám "nastartuje" a funguje normálně. Při přidání aplikace do chráněných již tento problém není.

Testováno na Androidu 5.1.1 a na zařízeních Honor 6 (kde se vyskytuje chyba) a Huawei Y6 (zde to funguje naprosto bezproblémů).

Najde se tu někdo, kdo by mi polopatě mohl vysvětlit kde by mohla být chyba, případně, co bych mohl dělat špatně?

Díky za případné rady,

Pepa

 
Odpovědět 28. srpna 17:31
Avatar
Odpovídá na Josef Štěpánek
milan jurkulak:

Ano. GC (garbage collector) uvolnuje pamet priblizne, dle potreby v intervalu max 20minut. Coz znamena, ze vse co neni ve weak referenci nebo v services proste strati vsechny pametove alokace. Doporucuju jako backend pro widget udelat Service. Service bezi na pozadi a gc ignoruje jeji objekty. Dale doporucuju byt opatrny a skontrolovat memory leaks.

Senior android developer
Milan Jurkulak

 
Nahoru Odpovědět 29. srpna 1:28
Avatar
Odpovídá na milan jurkulak
Josef Štěpánek:

Díky za odpověď. Zapomněl jsem napsat, že jsem zkoušel podle dokumentace/návodů udělat službu, která by měla běžet pořád, nicméně když jí GC zabije, tak už nenaskočí :-/

Každopádně nechápu to, proč na nějakém telefonu to funguje jinak (widget funguje i po třech dnech na vypnutém telefonu) - v případě, že GC zabije proces, tak jakmile kliknu na widget, tak se automaticky nastartuje proces mé aplikace a druhý telefon to takhle neudělá.

Další věc je ta, proč to nefunguje jen když ten proces ukončí GC ale když ho ukončím ručně, tak to běží dál.

Jasný, dá se to vyřešit tím, že jí na určitým telefonech přidám do chráněných aplikací a nemusím to řešit, ale spíš mě zajímá, jak to celý funguje a kde by mohla bát chyba. Je tam dost věcí, co my nedávají smysl. :-/

V případě, že by tě ještě nepadlo, kde bych mohl hledat chybu, tak bych byl za to velice vděčný, prozatím zkusím vyzkoušet víc zařízení, zdali se to bude chovat stejně.

Díky Pepa

PS: Otázka je, jak to má fungovat správně, zdali má widget ten proces nastartovat (což bych logicky čekal), nebo ne.

 
Nahoru Odpovědět 29. srpna 9:44
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 3 zpráv z 3.