Signo de dólar ($) después del nombre de clase de actividad en registros de Android (clase interna no anónima)
Estoy pasando por algunos registros de bloqueo para mi aplicación y el seguimiento de la pila muestra algo así como:
at MyActivity.formatDouble(MyActivity.java:182) at MyActivity.access$47(MyActivity.java:196) at MyActivity$28.onCameraChange(MyActivity.java:167)
"MyActivity" es una actividad y por lo tanto no es una clase interna anónima. No puedo estar seguro del signo de dólar en la línea # 3 (y el de la línea # 2 también)
- Retrofit GSON serialize Fecha de la cadena json en long o java.lang.Long
- MUPDF UnsupportedOperationException al abrir el pdf
- Cmd Prompt no detectando la entrada de teclado
- AlarmManager efecto en la batería de una aplicación de reloj despertador
- Desactivar el selector Android ListView
- Pros y contras de usar un Thread o TimerTask para un juego Android
- ¿Qué es la devolución de llamada en Android?
- ¿Cuál es la diferencia entre `opencv.android.JavaCameraView` y` opencv.android.NativeCameraView`
- Sincronizar el PoolingClientConnectionManager o no
- Acceder a funciones comunes estáticas?
- Android: sustituye el método desde una versión API superior y admite una versión API inferior.
- Aplicación para Android: ¿Llamar a AsyncTask dos veces?
- Clase genérica que extiende la clase e implementa la interfaz
Sospecho que la línea 167 está dentro de una clase anónima dentro de MyActivity
y que el access$47
es simplemente un método trampoline para permitir que onCameraChange
llame a un método privado dentro de MyActivity
. (La JVM no permitiría que, por lo que el compilador de Java crea un método para permitirlo.)
Puedes ver esto fácilmente con una sencilla clase Java, ni siquiera en Android:
public class Test { private static void privateMethod() { throw new RuntimeException(); } public static void main(String[] args) throws Exception { Runnable runnable = new Runnable() { @Override public void run() { privateMethod(); } }; runnable.run(); } }
Esto le da un rastro de pila similar al que ha mostrado:
Exception in thread "main" java.lang.RuntimeException at Test.privateMethod(Test.java:4) at Test.access$000(Test.java:1) at Test$1.run(Test.java:10) at Test.main(Test.java:13)
El Test$1.run
está dentro de una clase interna anónima dentro de main
, y el método access$000
acceso está proporcionando acceso a privateMethod
.
- MapsV2 cómo falsificar un clic del botón myLocation
- ¿Es posible ejecutar mi servicio por tiempo indefinido?