2012-11-23 14 views

risposta

2

probabilmente questo non è il modo migliore, ma ho avuto un problema simile e ho usato una funzione di sospensione di 30 secondi proprio all'inizio del ricevitore di avvio sul metodo Recita, quindi ho avuto il tempo di andare alla lista dei processi in prospettiva DDMS e metto la mia app in modalità debug, così il breakpoint sulla prima vera istruzione del metodo onReceive è andato a segno. spero che questo aiuto

0

Stessa situazione mi aveva in precedenza, Volevo sapere i dettagli del registro dell'applicazione per quanto riguarda Broadcast Receiver, servizi in esecuzione o arresto anomalo dell'app, quando era utilizzato dall'utente nel dispositivo Android.

[in modo da utilizzare questo codice è possibile ottenere informazioni come quando il ricevitore broadcast start, stop, in crash etc]

ho scritto il mio LogCat e che sta funzionando bene, e qui è il codice può aiutare

Prima di tutto bisogna mettere alcune costanti nel file di costante dell'applicazione

public static final String LOG_DIR="/SeedSpeak/LOG"; 
public static final String LOG_MODE_EXCEPTION="exception"; 
public static final String LOG_MODE_INFO="info"; 

Poi è necessario creare tre metodo nella Utill app presentare

0.123.
public static void MyLog(String logMode, String msgKey, Object msgValue) { 

     File sdCard = Environment.getExternalStorageDirectory(); 
     File dir = new File(sdCard.getAbsolutePath()+ 

          SeedSpeakConstants.LOG_DIR); 
     if (!dir.exists()) { 
      dir.mkdirs(); 
     } 

     String logFileAbsPath = dir + File.separator + "SeedSpeakLog.txt"; 


     BufferedWriter bufferedWritter = null; 
     try { 
      bufferedWritter = new BufferedWriter(
              new FileWriter(logFileAbsPath, 
        true)); 
      String logValue = null; 
      if (logMode.equalsIgnoreCase(
         SeedSpeakConstants.LOG_MODE_EXCEPTION)) { 
       logValue = logStackTrace((Throwable) msgValue); 
      } else { 
       logValue = msgValue.toString(); 
      } 
      logValue = currentDateTimeValue() + ": " + logMode + 
             " :" + msgKey + ": " 
        + logValue + "\n"; 
      bufferedWritter.write(logValue); 
      bufferedWritter.newLine(); 
      bufferedWritter.flush(); 
     } catch (FileNotFoundException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 

    } 


    public static String logStackTrace(Throwable t) { 
     StringWriter sw = new StringWriter(); 
     PrintWriter pw = new PrintWriter(sw, true); 
     t.printStackTrace(pw); 
     pw.flush(); 
     sw.flush(); 
     return sw.toString(); 
     } 


    public static String currentDateTimeValue() { 

     SimpleDateFormat formatter = 
         new SimpleDateFormat("yyyy-mm-dd-HH:mm:ss"); 
     formatter.setLenient(false); 

     Date curDate = new Date();  
     String curTime = formatter.format(curDate); 

     return curTime; 
    } 

Ora, come utilizzare questo nel vostro progetto, in modo semplice :)

Nota: qui TAG è solo un file corrente (attività/servizi/BR) nome come questo

private final static String TAG = "PlantSeedActivity"; 

(1). per informazioni solo su stampa (BR, Servizio avviato o no .. bla bla) log usa questo

SeedSpeakUtill.MyLog(SeedSpeakConstants.LOG_MODE_INFO, 
          TAG + ".onCreate", "Service is started now"); 

(2). per eccezione di stampa/dettagli di crash utilizzano questo modo

try{ 
// todo here 
} 
catch (Exception ex) 
{   

SeedSpeakUtill.MyLog(SeedSpeakConstants.LOG_MODE_EXCEPTION, 
           TAG + ".onStartCommand", ex); 


} 

Ora basta mettere applicazione in dispositivi Android e quando si desidera ottenere dettagli log vanno a SeedSpeakLog.txt il file ed eseguire il debug dell'applicazione.


o un altro modo in cui ho sentito che Google provice ACRA (Application Crash Report for Android) biblioteca

come si può avere sguardo sul this e this collegamento

PL Consentitemi di commentare se si ottiene alcuna difficoltà reinquadramento questo! !

Problemi correlati