Autore Topic: Memorizzazione String  (Letto 461 volte)

Offline Giak

  • Utente junior
  • **
  • Post: 52
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    transformer tf101
  • Sistema operativo:
    ubuntu 12.10
Memorizzazione String
« il: 23 Aprile 2013, 15:33:53 CEST »
0
avrei una domanda su quale design scegliere per un caso piuttosto semplice:

Un thread all'interno di un service fa da server e riceve stringhe su una socket, queste stringhe saranno poi passate a un Activity che le visualizzerà in una listview.

dovendo memorizzare più o meno permanentemente (fino a un massimo prestabilito es:200/300) queste stringhe come mi conviene memorizzarle? usando un database sqlLite? ogni volta che ricevo una stringa apro/scrivo/chiudo il db?

Offline blackgin

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1387
  • Respect: +164
    • Google+
    • blackgins
    • blackginsoft
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Nexus
  • Sistema operativo:
    Mac OSX 10.8
Re:Memorizzazione String
« Risposta #1 il: 23 Aprile 2013, 16:46:14 CEST »
0
Un database mi pare la scelta più appropriata.
Per quanto riguarda la gestione di apertura e chiusura db, questo dipende sostanzialmente dalla frequenza con cui le ottieni.
Personalmente io farei un database singleton a cui accedono l'activity e il service. Il service riceve le stringhe, le inserisce nel db e notifica l'activity. Questa aggiorna quindi la lista.
Postate il LogCat LogCat LogCat LogCat LogCat

Offline Giak

  • Utente junior
  • **
  • Post: 52
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    transformer tf101
  • Sistema operativo:
    ubuntu 12.10
Re:Memorizzazione String
« Risposta #2 il: 23 Aprile 2013, 18:40:08 CEST »
0
quale delle due implementazioni mi consigli?

threadsafe:
Citazione
public class Singleton {
 
   /**
    * Creato all'atto di caricamento in memoria della classe, thread-safe
    */
   private final static Singleton ISTANZA = new Singleton();
 
  /**
   * Costruttore privato, in quanto la creazione dell'istanza deve essere controllata.
   */
  private Singleton() {}
 
  /**
   * Punto di accesso al Singleton.
   * @return il Singleton corrispondente
   */
  public static Singleton getInstance() {
    return ISTANZA;
  }
}

non threadsafe
Citazione
public class MioSingolo {
    private static MioSingolo istanza = null;
 
    private MioSingolo() {}
 
    // Metodo della classe impiegato per accedere al Singleton
    public static synchronized MioSingolo getMioSingolo() {
        if (istanza == null)
            istanza = new MioSingolo();
        return istanza;
    }
}

Offline blackgin

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1387
  • Respect: +164
    • Google+
    • blackgins
    • blackginsoft
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Nexus
  • Sistema operativo:
    Mac OSX 10.8
Re:Memorizzazione String
« Risposta #3 il: 23 Aprile 2013, 20:17:54 CEST »
0
Perché dici che la seconda implementazione non é thread-safe? Il metodo é syncronized.
L'unica differenza tra i due metodi é l'efficienza.
Il primo caso é più efficiente in teoria, perché la sincronizzazione della seconda implementazione ha un prezzo.
Postate il LogCat LogCat LogCat LogCat LogCat

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Memorizzazione String
« Risposta #4 il: 24 Aprile 2013, 09:05:00 CEST »
0
E comunque mi sembra che sia solo la creazione ad essere thread-safe, non l'accesso.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline blackgin

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1387
  • Respect: +164
    • Google+
    • blackgins
    • blackginsoft
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Nexus
  • Sistema operativo:
    Mac OSX 10.8
Re:Memorizzazione String
« Risposta #5 il: 24 Aprile 2013, 09:45:38 CEST »
0
E comunque mi sembra che sia solo la creazione ad essere thread-safe, non l'accesso.
Beh, a parte la creazione, in quel codice il singleton viene solo letto, quindi il problema non si dovrebbe porre.
Poi ovviamente i suoi metodi andranno sincronizzati opportunamente.
Postate il LogCat LogCat LogCat LogCat LogCat