2011-10-21 15 views
8

Vorrei sapere se la registrazione può ridurre le prestazioni dell'applicazione? Inoltre, per favore dammi alcuni suggerimenti per aumentare le prestazioni delle applicazioni Android.La scrittura di troppi registri riduce le prestazioni dell'applicazione Android?

+0

Usa registro solo per il debug ... Elimina tutti i messaggi di registro quando si carica la build effettiva. – Krishnabhadra

+1

La registrazione eccessiva può avere un piccolo impatto sulle prestazioni, ma in genere no. (vedere i collegamenti nella risposta @gt_ebuddy). Mentre lo sviluppo è connesso a DDMS rallenterà l'app. – cistearns

+1

Possibile duplicato di [Log.d e impatto sulle prestazioni] (http://stackoverflow.com/questions/3773252/log-d-and-impact-on-performance) – rds

risposta

15

È meglio non mostrare il log nella build effettiva della tua app.

Spegnere in Android Manifest impostando debuggable:

<application android:icon="@drawable/icon" 
     android:label="@string/app_name" 
     android:debuggable="false"> 

Un altro modo

creare una classe logger:

Verificare la modalità di debug prima di eseguire log. Permette la modifica di un singolo punto tra la modalità di debug e l'applicazione distribuita e consente di fare cose extra come scrivere sul log file.

import android.util.Log; 
public class MyLog { 
    private static final boolean isDebug = false;; 
    public static void i(String tag, String msg) { 
     if (isDebug) { 
      Log.i(tag, msg); 
     } 
    } 
    public static void e(String tag, String msg) { 
     if (isDebug) { 
      Log.e(tag, msg); 
     } 
    } 
} 


Per ulteriori informazioni leggere http://rxwen.blogspot.com/2009/11/logging-in-android.html

e The SO QAs:

Log.d and impact on performance

Android Logging - How to clear for better performance

+4

In base alla mia esperienza, l'impostazione manifest non ha alcun impatto sul log produzione. Controlla semplicemente se un debugger può collegarsi alla tua applicazione. – cistearns

+0

** grassetto ** Grazie –

+0

@cistears L'impostazione debuggable = "false" aiuta ad aumentare l'efficienza? –

1

uso 'se' dichiarazione prima scrittura di registro.
è possibile disabilitare il registro quando si rilascia l'applicazione.

esempio:

public class LogTest extends Activity { 

private static final String TAG = "YOUR_LOG_TAG_NAME"; 
private static final boolean mDebug = true; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    //--[Start Log example]----------------------------------------- 
    if(mDebug) Log.d(TAG, "Log Write Test"); 
    //--[End Log example]----------------------------------------- 
} 

}

1

Qualsiasi testo di output in eccesso rallenterà la vostra applicazione, anche con un'applicazione desktop. Una registrazione eccessiva rallenta le cose, ma fondamentalmente serve una quantità folle di dati inviati, il che, a proposito, non è così difficile da fare con un ciclo for o while. Le cose che accadono in background durante la registrazione a volte includono la manipolazione delle stringhe, il rendering del testo, la gestione della cache, il filtraggio dei dati, la limitazione della lunghezza del registro e l'elenco continua.

Esistono diversi modi per rimuovere logcat dall'app finale, in particolare quelli che coinvolgono ProGuard. ProGuard non ha funzionato per me, ma ci sono un sacco di idee brillanti là fuori su come rimuoverle, inclusi programmi di scripting come sed.

Problemi correlati