2011-12-06 31 views

Trả lời

3

Tôi nghĩ rằng kỹ thuật đó không thể được sử dụng bằng cách sử dụng Java trong bất kỳ môi trường nào.

Có thể bạn có thể đạt được kết quả tương tự bằng AOP.

Nhưng những gì bạn có thể thực hiện với giao diện đó bị giới hạn trên Android. Xem Aspect-oriented programming in android. Trong thực tế, vì bạn sẽ không biên dịch mã đích (phương thức hệ thống), việc biên dịch thời gian biên dịch (dường như tất cả những gì bạn có thể sử dụng trên Android) sẽ vô dụng đối với trường hợp này. Như là câu trả lời này tôi giả sử.

Một suy nghĩ khác ... Tôi đoán bạn muốn thực hiện việc ghi nhật ký này một cách nhất quán. Nhưng nếu bạn cần điều này để gỡ lỗi một vấn đề, bạn có thể làm điều đó bằng cách sử dụng một conditional breakpoint in Eclipse.

Một biểu thức điều kiện có thể chứa mã Java độc đoán và có thể chứa nhiều hơn một tuyên bố, cho phép điều kiện breakpoint để thực hiện các tính năng như truy tìm. Ví dụ, một điều kiện có thể thực hiện một lệnh in và sau đó trả lại một giá trị mã hóa cứng để không bao giờ bị treo ("System.out.println (...); return false;").

Tôi không biết liệu điều này có hoạt động với các phương pháp trong SDK Android hay không. Nhưng nó hoạt động với các phương thức trong SDK Java. Ví dụ, đây là mã đơn giản:

System.err.println("foo"); 

tôi đã thực hiện một breakpoint có điều kiện trong PrintStream.print, như thế này:

System.err.println("hello: " + arg0); 
return false; 

Và giao diện điều khiển đầu ra khi gỡ lỗi trong chương trình là thế này:

hello: foo 
foo 

Lưu ý rằng vì JDK không được biên dịch với các biểu tượng gỡ lỗi, tôi không thể tham chiếu đến các tham số phương thức theo tên, nhưng sử dụng arg0..argn.

+0

Điều này cũng được áp dụng các phương pháp api từ sdk android? –

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