2012-11-23 31 views
6

Để gỡ lỗi BroadcastReceiver khi điện thoại khởi động lại, Tôi đã thử một số phương pháp nhưng không hoạt động và liên kết như sauvấn đề Android: Debug khi điện thoại tắt

How to debug BOOT_COMPLETE broadcast receiver's "Force Close" crashes? lực cận treo

+1

Tại sao bạn không gỡ lỗi bằng cách sử dụng một sự kiện khác (cho mục đích thử nghiệm)? IE: Kích hoạt nó từ dịch vụ hoặc hoạt động của riêng bạn hoặc để nó lắng nghe một số sự kiện khác. –

Trả lời

2

có lẽ đây không phải là cách tốt nhất, nhưng tôi đã có một vấn đề tương tự và tôi đã sử dụng chức năng ngủ 30 giây ngay từ đầu phương thức nhận khởi động onReceive, vì vậy tôi đã có thời gian để đi đến danh sách quy trình trong phối cảnh DDMS và đặt ứng dụng của tôi ở chế độ gỡ lỗi, vì vậy điểm ngắt trên lệnh thực đầu tiên của phương thức onReceive nó đã bị hitted. hy vọng điều này sẽ giúp

0

Cùng tình tôi trước đó, Tôi muốn biết chi tiết nhật ký ứng dụng liên quan đến Broadcast Receiver, dịch vụ đang chạy hoặc lỗi ứng dụng, v.v khi người dùng đang sử dụng thiết bị Android.

[nên sử dụng mã này, bạn có thể nhận được các thông tin như khi Broadcast Receiver của bạn bắt đầu, dừng lại, tai nạn vv]

tôi đã viết LogCat riêng của tôi và nó làm việc tốt, và đây là mã có thể giúp bạn

Trước tiên, bạn cần phải đặt một số hằng số trong tập tin liên tục ứng dụng của

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

Sau đó, bạn cần phải tạo ra ba phương pháp trong Utill ứng dụng của tập tin

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; 
    } 

Bây giờ, Làm thế nào để sử dụng này trong dự án của bạn, đơn giản như vậy :)

Lưu ý: đây TAG chỉ là một tập tin hiện tại (hoạt động/dịch vụ/BR) tên như thế này

private final static String TAG = "PlantSeedActivity"; 

(1). cho chỉ in thông tin (BR, dịch vụ bắt đầu hay không .. bla bla) đăng nhập sử dụng này

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

(2). cho in ngoại lệ/chi tiết vụ tai nạn sử dụng cách này

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

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


} 

Bây giờ bạn chỉ cần đặt ứng dụng trong thiết bị Android và khi bạn muốn để có được đăng chi tiết đi đến SeedSpeakLog.txt tập tin và debug ứng dụng của bạn.


hoặc một trong nhiều cách mà tôi nghe nói rằng Google Tỉnh ACRA (Application Crash Report for Android) thư viện

bạn có thể muốn có cái nhìn về thisthis liên kết

PL cho tôi nhận xét nếu bạn nhận được bất kỳ rắc rối chuyển loại này! !

Các vấn đề liên quan