2013-05-08 22 views
17

Ogni volta che eseguo qualsiasi app, eseguo sempre l'hardcode della stringa anziché fare riferimento alla risorsa stringa da XML. App funziona bene, ma mi dà avvertimento per utilizzare @string risorsaL'hard coding della stringa influisce sulle prestazioni?

pulsante Esempio:

<Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="click here" /> 

La mia domanda è se influenzerà la mia performance delle applicazioni, se lo faccio o (@string risorse) è solo utilizzato per l'internazionalizzazione .

+22

Si ottiene prestazioni peggiori da parte degli sviluppatori, se si codificano con difficoltà. ;) – AlbeyAmakiir

risposta

40

Si tratta di un avviso di sfilacciamento Android per aiutarti con la localizzazione.

Tecnicamente, le stringhe di codifica hard renderebbero la tua app un po 'migliore, poiché non dovrà cercare la stringa dal corrispondente R int ogni volta. Tuttavia, questa differenza di prestazioni sarà trascurabile e nessun essere umano sarà in grado di notarlo.

Tuttavia, è necessario sempre mantenere le risorse String nella cartella dei valori in quanto semplifica la localizzazione.

+1

Ben detto. +1 - –

+0

+1 la differenza potrebbe essere in milli secondi ?? – Raghunandan

+1

@Raghunandan Sì. Probabilmente nel raggio di 10-100 millisecondi. –

4

Non vedo alcun motivo per cui si ottiene peggiore prestazione utilizzando una stringa codificata. Ci sono meno passaggi coinvolti con stringhe hard-coded. Tuttavia, è certamente una buona pratica separare le stringhe di risorse dall'applicazione e dal codice dell'interfaccia utente.

4

Non creerà alcun problema di prestazioni. Ma la definizione di stringhe in stringhe.xml è incoraggiata per la facilità di manutenzione e di lolalizzazione. Ad esempio, considera il seguente scenario due.

Scenario 1

Quando è necessario modificare una stringa utilizzata in molti luoghi. Nel tuo caso Dovrai cambiare tutto il "click here" in tutti i layout. Ma se hai dichiarato in strings.xml, solo le modifiche apportate a xml le cambieranno tutte.

Scenario 2

Per un altro esempio, se si desidera mostrare diverse lingue per diversi locale allora avete bisogno di utilizzare lo string.xml.

0

La tua app non supporterà Localization quindi, se questo non è il requisito della tua app, non ci saranno problemi con le stringhe codificate.

1

Non penso che una stringa di hardcoding renderà il tuo programma più lento. Infatti migliorerà le prestazioni in quanto non c'è bisogno di alcuna ricerca per la stringa nella classe R.java. Riferimento la stringa da strings.xml è delle migliori pratiche a causa di 2 motivi: -

1- Localizzazione 2- se si sta utilizzando la stessa stringa in più posti e vorrebbe modificare lo stesso in tutti i luoghi che la salva sovraccarico di modificare tutte le stringhe hard-coded individualmente.

1

Le stringhe di codifica hard non influiscono direttamente sulle prestazioni. Influisce sulla manutenibilità.

Nel caso in cui si hardcode una stringa e in una fase successiva se si desidera modificare la stringa "Click me" per "aggiungere" o qualcos'altro, quindi è necessario cercare il tuo progetto completo per cambiare la stringa dove e tutto si usa. Quindi meglio seguire sempre strings.xml. :)

4

Come altri hanno detto, è per la localizzazione, ma per prestazioni, dipende da quante volte al secondo quelle stringhe vengono rilevate. Ho visto un caso in cui un'app è lenta all'avvio, e il campionamento dello stack ha mostrato che il 50% del tempo è stato speso nella ricerca di risorse di stringhe, e il motivo per cui le stringhe venivano cercate era quello di visualizzarle sullo splash screen che dà all'utente qualcosa da guardare mentre l'app si avvia!

Problemi correlati