Visualizza post

Questa sezione ti permette di visualizzare tutti i post inviati da questo utente. N.B: puoi vedere solo i post relativi alle aree dove hai l'accesso.


Post - wlf

Pagine: [1] 2 3 ... 28
1
Gestione dei dati / Re:Sqlite & AsyncTask/Service (task concorrenti)
« il: 19 Settembre 2017, 15:42:02 CEST »
A suo tempo cercai di ovviare al problema cercando di "killare" l'App completamente, in questo modo alla successiva ripartenza il singleton si sarebbe ricreato. Ma non ho trovato una soluzione per riuscire a killare l'App dopo un tot di secondi che non è più operativa.

Tu hai mai fatto qualcosa del genere? Non sarebbe una soluzione, ma un modo per aggirare il problema.

2
Gestione dei dati / Re:Sqlite & AsyncTask/Service (task concorrenti)
« il: 19 Settembre 2017, 13:42:44 CEST »
Io a suo tempo avevo proprio dato per scontato che Application ripassasse per la onCreate e re-inizializzasse il singleton, avevo anche messo un controllo, ma così non accadeva. Nella onCreate di Application inizializzavo nuovamente i valori ma mi beccavo dei NullPointerException. :(

3
Gestione dei dati / Re:Sqlite & AsyncTask/Service (task concorrenti)
« il: 19 Settembre 2017, 10:47:29 CEST »
Innanzi tutto grazie delle tue preziose considerazioni Ohmnibus! ;)

Il singleton è un metodo sicuro: non può essere fatto fuori dal CG fintanto che l'app non viene terminata.

Non pare essere sempre vero. Io stesso utilizzavo un singleton inizializzato dentro ad Application, ma sporadicamente avevo delle NullPointerException. Per questo motivo ho tolto l'inizializzazione in application e tutte le volte che chiamavo il singleton io lo inizializzavo se per caso era a null.

4
Gestione dei dati / Re:Sqlite & AsyncTask/Service (task concorrenti)
« il: 18 Settembre 2017, 12:22:27 CEST »
Faccio la Initialize() e la open per ogni volta che utilizzo il db dopo di che lo chiudo con la close.

Tenerlo come singleton in application mi piace decisamente di meno.

5
View e Layout / RotateAnimation & notifyDataSetChanged()
« il: 31 Agosto 2017, 18:04:31 CEST »
Salve,
ho una RotateAnimation che mi fa girare una immagine e nel frattempo carico dei dati quindi notifico circa ogni 2 secondi che i dati sono cambiati tramite notifyDataSetChanged().

Se guardo l'immagine che ruota ha una sorta di impuntamento proprio in occasione della variazione dei dati.

E' possibile fare in modo che la RotateAnimation giri "liscia" e nel frattempo faccio le notifyDataSetChanged() senza che si blocchi?
Grazie.

6
Gestione dei dati / Re:Sqlite & AsyncTask/Service (task concorrenti)
« il: 01 Agosto 2017, 12:31:38 CEST »
Istanziare MyDbManager da Application, una sorta di Singleton, personalmente lo trovo pericoloso. Che sicurezza dopo aver pausato l'App anche per alcuni giorni, potresti riprenderla (resume) che il GC ti ha fatto fuori MyDbManager. :(

Per questo trovo leggermente più sicuro l'approccio del link; il tuo è semplificato ma più o meno fa la stessa cosa. ;)

7
Gestione dei dati / Sqlite & AsyncTask/Service (task concorrenti)
« il: 01 Agosto 2017, 09:54:35 CEST »
Salve,
ho la necessità di utilizzare Sqlite sia da diverse Activity, sia da AsyncTask che da dei Service. A volte mi capitano delle situazioni che mi viene dato "database already closed" oppure "database is locked ".

Se apro il db nella onCreate() e lo chiudo nella onDestroy() passando da una activity ad un altra la onCreate() di quella successiva è prima della onDestroy() di quella precendente. Facendolo nella onPause() e onResume() mi ritrovo con degli AsyncTask che casomai non sono ancora cessati che vanno a scrivere dopo la onPause(). Idem con i Service. :(

Aprendo il db anche nell'AsyncTask e nei Service mi ritrovo con una re-open; posso controllarlo in fase di apertura con una db.isOpen() ma poi posso aver problemi se il db nel frattempo è già stato chiuso. :(

Ho trovato un interessante soluzione ma non mi convince del tutto. In particolare la initializeInstance() dove andrebbe fatta? Solamente una volta, magari in Application o nella prima activity dell'App oppure sempre prima di ogni getInstance().openDatabase()?

Perché la getInstance() ritorna un Exception, non lo re-inizializza, quindi senza chiamare preventivamente la initializeInstance() il db sarà comunque inaccessibile.

8
Gestione dei dati / Re:File su micro sd marshmallow
« il: 31 Luglio 2017, 17:30:25 CEST »
Un inferno; come spesso accade il comportamento è in base alla versione del SO.

9
Gestione dei dati / Re:File su micro sd marshmallow
« il: 24 Luglio 2017, 09:45:23 CEST »
@Ohmnibus
Ok, ma la mia curiosità è se si riesca a scrivere in radice della microSD che dovrebbe essere "/storage/16EF-2C14" oppure questo comporti che si abbiano i permessi di root?
E' praticamente come scrivere file nella memoria interna? Non si esce quindi dalla cartella dell'App senza permessi di root?

10
Multithreading e servizi / Re:Multithreading
« il: 24 Luglio 2017, 09:42:10 CEST »
Ok, per quanto riguarda un AsyncTask con THREAD_POOL_EXECUTOR è possibile lanciare più AsyncTask contemporaneamente. Di default eseguirebbe un solo AsyncTask, ma cambiando il lancio ho visto che possono essere lanciati più contemporaneamente.

Per quanto riguarda l'IntentService invece da quanto ho capito, se si lancia sempre lo stesso, viene creata una queue, solo alla fine del primo viene eseguito il secondo e così via.

Codice: [Seleziona]
Intent intent1 = new Intent(this, myIntentService.class);
Intent intent2 = new Intent(this, myIntentService.class);
Intent intent3 = new Intent(this, myIntentService.class);
startService(intent1);
startService(intent2);
startService(intent3);

Se invece vengono lanciati intentService diversi questi possono essere eseguiti senza fare una coda:

Codice: [Seleziona]
Intent intent1 = new Intent(this, myIntentService1.class);
Intent intent2 = new Intent(this, myIntentService2.class);
Intent intent3 = new Intent(this, myIntentService3.class);
startService(intent1);
startService(intent2);
startService(intent3);

Mi confermi per quanto riguarda l'IntentService?

11
Gestione dei dati / Re:File su micro sd marshmallow
« il: 21 Luglio 2017, 18:16:39 CEST »
Ma poi nella microSD dove ti scrive realmente, in radice o sotto la cartella della tua App?
Hai provato a togliere la microSD e leggerla da un PC per verificare dove viene scritto realmente?

A mio avviso non si può scrivere in radice, ma creando una cartella relativa all'App come ti ha suggerito Ohmnibus allora si!

12
Gestione dei dati / Re:File su micro sd marshmallow
« il: 21 Luglio 2017, 16:33:16 CEST »
Mi provi a togliere da  "/storage/16EF-2C14/Android/data/com.time/files" tutto lasciando solo " /storage/16EF-2C14/"?


13
Multithreading e servizi / Multithreading
« il: 21 Luglio 2017, 14:42:40 CEST »
Ci sono dei limiti nel Multithreading?

Dal mainThread dell'activity principale, posso lanciare più AsyncTask, Service, IntentService? C'è magari qualche documento che spiega in modo esaustivo quali sono i limiti?

14
View e Layout / BottomSheet a più \"posizioni\"
« il: 09 Giugno 2017, 10:14:02 CEST »
Stavo provando il BottomSheet, questo ha NestedScrollView con un parametro "app:behavior_peekHeight" che indica il minimo del BottomSheet visibile in basso. Quando lo trascino, anche di pochissimi mm, questo si arresta o nella posizione in basso definita da "app:behavior_peekHeight" o nella massima posizione in alto definita dalla grandezza del NestedScrollView a seconda se l'ultimo movimento di trascinamento era verso l'alto o verso i basso, come se venga "calamitato". Si ferma su 2 "posizioni".

Io vorrei invece un comportamento su 3 posizioni. Circa 1/4 del bottomSheet in basso, circa 1/2 sempre dal basso e infine che il bottomSheet mi riempa circa 3/4 dello schermo.  Una cosa simile come fa maps quando si sta definendo un percorso, che in basso vedi il tempo ed i km, ed in alto si vede la cartina con il percorso, trascinando in alto si iniziano a vedere i dettagli del percorso e la cartina in alto si rimpicciolisce,  trascinando ulteriormente in alto si vedono solo i dettagli del percorso e sparisce la cartina.

Adesso riesco a trascinare solo su 2 posizioni; mi sfugge come aggiungere un altra posizione. :(
A differenza di Maps io inoltre vorrei partire dalla posizione intermedia, quindi potrei trascinare verso il basso o verso l'alto.  ???

Idee in merito? Grazie.

Post unito: 09 Giugno 2017, 17:54:15 CEST
Il Bottom Sheet "volendo" ha 3 stati associabili a 3 posizioni:
  • STATE_EXPANDED
  • STATE_COLLAPSED
  • STATE_HIDDEN

Quindi volendo ha 3 posizioni; peccato che una volta fatto sparire non si riesce più a farlo ricomparire, o perlomeno si può fare da codice associato a qualche altra operazione. :(

In maps quando si è nella modalità navigatore anche questo ha 3 posizioni ed il drag consente solo di fermarsi in una delle 3, ma la Hidden sembra non essere nascosta completamente, mentre quando si è in modalità ricerca senza ancor aver digitato nulla è possibile trascinare il bottom quanto si vuole, non sembra avere delle posizioni predefinite. Sarebbe utile sapere come fare a non nascondere completamente il BottomSheet e come fare ad ottenere un movimento progressivo.

15
View e Layout / Re:GridView vs RecyclerView + GridLayoutManager
« il: 01 Giugno 2017, 15:58:11 CEST »
Grazie al tuo suggerimento sono già riuscito a realizzarlo in buona parte ... ;)

Hai completamente ragione, ricreare su Android comportamenti iOS è un lavoraccio e vai fuori standard.

Il menuPopUp lo boccio in pieno, è orrendo, bruttino anche l'actionMode. Il bottom sheet, col senno di poi, sarebbe stata un ottima soluzione. :D

Pagine: [1] 2 3 ... 28